Javascript日期字符串构造错误的日期

这个问题在这里已经有了答案:

  • 为什么Date.parse会提供不正确的结果? 10个答案

  • 当您将日期作为字符串传递时,实现是特定于浏览器的。 大多数浏览器将破折号解释为时间以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

    上一篇: Javascript Date string constructing wrong date

    下一篇: ParseException: Unparseable date exception