JS 时间加一天的问题

JavaScript012

JS 时间加一天的问题,第1张

是<input type=text name = date" + i + "

这个text的日期等于前一个的日期加1吗?

看代码:

<input type=text id=hidden value=0>

<table id="table1">

<TR>

<TD>

<DIV><INPUT ondblclick=addrowsother(this.value) name=date1 value="2001-1-21"></DIV></TD>

<TD>

<DIV><SELECT name=time1><OPTION selected value=上午>上午</OPTION><OPTION value=下午>下午</OPTION></SELECT></DIV></TD>

<TD>

<DIV><INPUT onclick=abc()name=richeng 1></DIV></TD>

<TD>

<DIV><INPUT name=partical 1></DIV></TD>

<TD>

<DIV><INPUT name=address 1></DIV></TD>

<TD>

<DIV><INPUT ondblclick=addrows()name=Zcr 1></DIV></TD></TR>

</table>

<SCRIPT LANGUAGE="JavaScript">

function addrowsother(val) {

var i = parseInt(document.getElementById("hidden").value)+1

var x = document.getElementById("table1").insertRow()

var h1 = x.insertCell(0)

var h2 = x.insertCell(1)

var h3 = x.insertCell(2)

var h4 = x.insertCell(3)

var h5 = x.insertCell(4)

var h6 = x.insertCell(5)

h1.innerHTML = "<div><input type=text name = date" + i + " ondblclick='addrowsother(this.value)' value='" + addday(val, 1) + "'></div>"

h2.innerHTML = "<div><select name=time" + i + " ><option value=上午>上午</option><option value=下午>下午</option></select></div>"

h3.innerHTML = "<div><input name=richeng " + i + " type=text onclick=abc()></div>"

h4.innerHTML = "<div ><input name=partical " + i + " type=text ></div>"

h5.innerHTML = "<div><input name=address " + i + " type=text ></div>"

h6.innerHTML = "<div><input name=Zcr " + i + " type=text ondblclick='addrows()'></div>"

// document.getElementById("date" + (i)).value = document.getElementById("date" + (i - 1)).value

document.getElementById("hidden").value = i

}

function addday(dt, days){

dt = dt.replace('-', '/')//js不认2000-1-31,只认2000/1/31

var t1 = new Date(new Date(dt).valueOf() + days*24*60*60*1000)// 日期加上指定的天数

return t1.getFullYear() + "-" + (t1.getMonth() + 1) + "-" + t1.getDate()

}

</SCRIPT>

开始查了查js的使用文档,但没发现可以直接用的函数,于是就想自己写函数来着,这就要涉及到每个月天数的判断,如果是2月份的话,还要涉及到闰年的判断,虽然不复杂但我想js应该不会这么低级,于是查了下资料,终于有了如下重大发现,以在某个日期上加减天数来说,其实只要调用Date对象的setDate()函数就可以了,具体方法如下:

function addDate(date,days){

var d=new Date(date)

d.setDate(d.getDate()+days)

var m=d.getMonth()+1

return d.getFullYear()+'-'+m+'-'+d.getDate()

}

其中,date参数是要进行加减的日期,days参数是要加减的天数,如果往前算就传入负数,往后算就传入正数,如果是要进行月份的加减,就调用setMonth()和getMonth()就可以了,需要注意的是返回的月份是从0开始计算的,也就是说返回的月份要比实际月份少一个月,因此要相应的加上1。

思路:

相加的日期先分别转换成毫秒数,然后再相加

将加得的毫秒数再转换成日期

下面是简单的代码,仅供参考:

<script>

    var date1 = new Date('2015-10-10')

    var date2 = new Date('2015-10-11')

    alert(new Date(date1.getTime() + date2.getTime())) //Mon Jul 18 2061 16:00:00 GMT+0800 (中国标准时间)

</script>