Posted in Javascript onOctober 08, 2009
//dateObj是一个日期对象,days表示给这个日期加多少天,比如说4,5(天) function dateAdd(dateObj,days){ var tempDate = dateObj.valueOf(); tempDate = tempDate + days * 24 * 60 * 60 * 1000; tempDate = new Date(tempDate); return tempDate; } //然后使用,创建一个日期对象 var dateValue = document.getElementById("XXYY").value.split("-"); var custArvDateTwoValue = new Date(dateValue[0],dateValue[1]-1,dateValue[2]); //调用dateAdd,加两天 custArvDateTwoValue = dateAdd(custArvDateTwoValue,2); var year = custArvDateTwoValue.getFullYear(); var month = custArvDateTwoValue.getMonth() + 1; var days = custArvDateTwoValue.getDate(); month = month <= 9 ? "0"+month : month; days = days <= 9 ? "0"+days : days; document.getElementById("XX").value = year + "-" + month + "-" +days;
我在测试的时候发现,当document.getElementById("XXYY").value的值是2009-10-31
返回的居然是2009-11-01
其它情况都是正确的,比如说输入2009-10-01,返回2009-10-03
我还试了今天和明年的每个月最后一天,只有2009-10-31出问题(我试了很多时间,只有这个时间有问题,难度这个月有32天)
当我试2009-10-31,返回的是2009-11-01也是正确的
最后发现原来是时区的问题,所以大家以后发现这类问题,可以看下时区是不是没对应上。
Javascript 日期处理之时区问题
声明:登载此文出于传递更多信息之目的,并不意味着赞同其观点或证实其描述。
Reply on: @reply_date@
@reply_contents@