我想在JavaScript中解析一个没有时区的日期。我试着:
new Date(Date.parse("2005-07-08T00:00:00+0000"));
返回2005年7月8日星期五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或new日期(年、月、日)。
通过简单地将一个字符串传递到Date构造函数(没有原型方法)。
我必须生成一个Date对象,而不是String对象。
我遇到了同样的问题,然后想起了我正在从事的一个遗留项目的一些问题,以及他们是如何处理这个问题的。当时我并不理解,也并不在意,直到我自己遇到了这个问题
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”将时区设置为0并忽略用户的时区。这可能是Date类中的一个侥幸,但它在一段时间以前就存在,今天也存在。而且它似乎可以跨浏览器工作。你自己试试吧。
这段代码是在一个全局项目中实现的,在这个项目中,时区很重要,但查看日期的人并不关心它被引入的确切时间。
不幸的是,在默认情况下,日期解析有一些固有的问题没有得到很好的解决。
-人类可读的日期包含隐含的时区
网络上有许多广泛使用的日期格式是模棱两可的
为了简单明了地解决这些问题,我们需要这样一个函数:
>parse(whateverDateTimeString,expectedDatePattern,timezone)
"unix time in milliseconds"
我找过这个,但没有找到这样的东西!
所以我创造了:
https://github.com/zsoltszabo/timestamp-grabber
享受吧!