0
日期格式问题与Javscript日期()。Javascript日期问题返回1天小于设置日期 - 时区
背景:我正在修改Jquery UI datepicker,并且遇到了月份和日期返回不正确值的问题。
$('#datefield').datepicker({
beforeShowDay: function(date) {
// issues experienced here - isolation test code below
// Mon Aug 01 2016 00:00:00 GMT+1000 (AUS Eastern Standard Time)
// DateMonth: 8 - ISO: 20160731
}
})
基于JS日期()建设上http://www.w3schools.com/jsref/jsref_obj_date.asp
示例代码:
var d1 = new Date();
var d1Month = d1.getMonth()+1;
var d1ISO = d1.toISOString().slice(0,10).replace(/-/g,"");
console.log(d1);
console.log('1Month: '+d1Month+' ISO: '+d1ISO);
var d2 = new Date(2016,06,31);
var d2Month = d2.getMonth()+1;
var d2ISO = d2.toISOString().slice(0,10).replace(/-/g,"");
console.log(d2);
console.log('2Month: '+d2Month+' ISO: '+d2ISO);
var d3 = new Date('2016-07-31');
var d3Month = d3.getMonth()+1;
var d3ISO = d3.toISOString().slice(0,10).replace(/-/g,"");
console.log(d3);
console.log('3Month: '+d3Month+' ISO: '+d3ISO);
var d4 = new Date(2016, 07, 01);
var d4Month = d4.getMonth()+1;
var d4ISO = d4.toISOString().slice(0,10).replace(/-/g,"");
console.log(d4);
console.log('4Month: '+d4Month+' ISO: '+d4ISO);
输出(控制台):
Wed Aug 24 2016 11:30:51 GMT+1000 (AUS Eastern Standard Time)
1Month: 8 ISO: 20160824
*Sun Jul 31 2016 00:00:00 GMT+1000 (AUS Eastern Standard Time)
2Month: 7 ISO: 20160730
Sun Jul 31 2016 10:00:00 GMT+1000 (AUS Eastern Standard Time)
3Month: 7 ISO: 20160731
*Mon Aug 01 2016 00:00:00 GMT+1000 (AUS Eastern Standard Time)
4Month: 8 ISO: 20160731
为什么 'D2' 的回报20160730当该对象返回7月31日?
为什么'd4'在设定的日期是8月1日时会返回20160731?
为什么d3能正常工作?
我的假设是,ISO日期以某种方式减去GMT + 10并获得前一天。
我知道这一步(protoype函数)来尝试和格式 ,但它仍然是一个谜我为什么上面产生不同的结果...
return [this.getFullYear(), !mm[1] && '0', mm, !dd[1] && '0', dd].join('');
w3schools是一个质量差的网站。 – RobG