解析日期没有时区的JavaScript

我想在JavaScript中解析没有时区的日期。 我努力了:

new Date(Date.parse("2005-07-08T00:00:00+0000"));

退货周五2005年7月08日02:00:00 GMT + 0200 (中欧夏令时间)

new Date(Date.parse("2005-07-08 00:00:00 GMT+0000"));

返回相同的结果

new Date(Date.parse("2005-07-08 00:00:00 GMT-0000"));

返回相同的结果

我想解析时间:

  • 没有时区。

  • 不调用构造函数Date.UTC或新日期(年,月,日)。

  • 只需简单地将字符串传入Date构造函数(不使用原型方法)即可。

  • 我必须产生Date对象,而不是String


  • 日期被正确解析,它只是将它转换为当地时区的toString:

    > new Date(Date.parse("2005-07-08T11:22:33+0000"))
    Fri Jul 08 2005 13:22:33 GMT+0200 (CEST)
    > new Date(Date.parse("2005-07-08T11:22:33+0000")).toUTCString()
    "Fri, 08 Jul 2005 11:22:33 GMT"
    

    Javascript日期对象是时间戳 - 它们仅仅包含自时代以来的毫秒数。 Date对象中没有时区信息。 这个时间戳表示的日历日期(日,分,秒)是解释的一个问题(其中一个是to...String方法)。

    以上示例显示日期正确解析 - 也就是说,它实际上包含与GMT中的“2005-07-08T11:22:33”相对应的毫秒量。


    我有同样的问题。 我得到一个日期作为一个字符串,例如:'2016-08-25T00:00:00',但我需要有正确的时间日期对象。 要将String转换为对象,我使用getTimezoneOffset:

    var date = new Date('2016-08-25T00:00:00')
    var userTimezoneOffset = date.getTimezoneOffset() * 60000;
    new Date(date.getTime() + userTimezoneOffset);
    

    我遇到了同样的问题,然后想起了我正在研究的遗留项目以及他们如何处理这个问题。 我当时并不理解它,直到我自己遇到问题时才真正关心它

    var date = '2014-01-02T00:00:00.000Z'
    date = date.substring(0,10).split('-')
    date = date[1] + '-' + date[2] + '-' + date[0]
    
    new Date(date) #Thu Jan 02 2014 00:00:00 GMT-0600
    

    无论出于何种原因将日期传递为'01-02-2014',都会将时区设置为零并忽略用户的时区。 这可能是Date类中的一种侥幸,但它在一段时间之前存在并且存在于今天。 它似乎可以跨浏览器工作。 自己尝试一下。

    此代码在全球项目中实施,其中时区非常重要,但查看日期的人员并不在意它引入的具体时间。

    链接地址: http://www.djcxy.com/p/3073.html

    上一篇: Parse date without timezone javascript

    下一篇: Javascript new Date(str)