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时间:
-
没有时区。
-
不调用构造函数Date.UTC或新的date(年,月,日)。
-
只需简单地将string传入Date构造函数(没有原型方法)。
-
我必须产生
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
请享用!