parsingdate没有时区的JavaScript

我想在JavaScript中parsing没有时区的date。 我努力了:

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

返回星期五七月08 2005 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")); 

返回相同的结果

我想parsing时间:

  1. 没有时区。

  2. 不调用构造函数Date.UTC或新的date(年,月,日)。

  3. 只需简单地将string传入Date构造函数(没有原型方法)。

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

date正确parsing,它只是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" 

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

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

我有同样的问题。 我得到一个date作为一个string,例如:'2016-08-25T00:00:00',但我需要有正确的时间date对象。 要将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 

无论出于什么原因,将date作为“01-02-2014”来设置时区为零,并忽略用户的时区。 这可能是date类中的一种侥幸,但是它在一段时间之前就存在了,并且在今天存在。 而且这似乎是跨浏览器工作。 自己尝试一下。

这个代码是在一个全球项目中实现的,在这个项目中,时区非常重要,但是查看date的人并不关心导入的具体时间。

Date对象本身将包含时区,返回的结果是以默认方式将其转换为string的效果。 即你不能创build一个没有时区的date对象。 但是你可以做的是通过创build你自己的模仿Date对象的行为。 不过,最好还是交给像moment.js这样的图书馆 。

dateparsing有一些固有的问题,不幸的是默认情况下不能很好地解决。

– 人们可读的date有隐含的时区
在networking上有很多广泛使用的date格式是不明确的

为了解决这些问题容易和干净,需要这样一个function:

 >parse(whateverDateTimeString,expectedDatePattern,timezone) "unix time in milliseconds" 

我已经find了这个,但没有发现这样的事情!

所以我创build了: https : //github.com/zsoltszabo/timestamp-grabber

请享用!