Javascript日期字符串构造错误的日期
这个问题在这里已经有了答案:
当您将日期作为字符串传递时,实现是特定于浏览器的。 大多数浏览器将破折号解释为时间以UTC为单位。 如果你有一个UTC的负偏移量(你这样做),它会出现在当地的前一天。
如果你想要本地日期,那么尝试使用斜线代替,如下所示:
var date = new Date('2006/05/17');
当然,如果你不必从字符串中解析出来,你可以传递个别的数字参数,只需要知道数字传递的月份是基于零的。
var date = new Date(2006,4,17);
但是,如果您有字符串,并且您希望将这些字符串解析为日期的一致性,请使用moment.js。
var m = moment('2006-05-17','YYYY-MM-DD');
m.format(); // or any of the other output functions
从“05”删除前置零
实际发生的事情是,解析器将默认情况下的破折号解释为ISO-8601字符串的开始,格式为“YYYY-MM-DDTHH:mm:ss.sssZ”,默认情况下采用UTC时间(因此尾随的'Z “)。
您也可以使用“toISOString()”日期函数来生成这样的日期。 http://www.w3schools.com/jsref/jsref_toisostring.asp
如果您在日期中添加“00:00”或“00:00:00”(不是'T'),那么在Chrome中(在IE 10中不起作用),那么它就不再是UTC了,无论破折号。 ;)
链接地址: http://www.djcxy.com/p/18611.html