我想在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对象。
日期被正确解析,只是toString将其转换为您的本地时区:
let s = "2005-07-08T11:22:33+0000";
let d = new Date(Date.parse(s));
//此日志为我
//“2005年7月8日星期五13:22:33 GMT+0200(中欧夏季时间)”
//和其他东西给你
console.log (d.toString ())
//此日志
//星期五,2005年7月8日11:22:33 GMT
// for everyone
console.log (d.toUTCString ())
Javascript Date对象是时间戳-它们只包含从epoch开始的毫秒数。Date对象中没有时区信息。这个时间戳代表哪个日历日期(日、分、秒)是一个解释问题(其中一个是…字符串方法)。
上面的例子显示日期被正确地解析了——也就是说,它实际上包含了一个毫秒数,对应于GMT的"2005-07-08T11:22:33"。
不幸的是,在默认情况下,日期解析有一些固有的问题没有得到很好的解决。
-人类可读的日期包含隐含的时区
网络上有许多广泛使用的日期格式是模棱两可的
为了简单明了地解决这些问题,我们需要这样一个函数:
>parse(whateverDateTimeString,expectedDatePattern,timezone)
"unix time in milliseconds"
我找过这个,但没有找到这样的东西!
所以我创造了:
https://github.com/zsoltszabo/timestamp-grabber
享受吧!
日期被正确解析,只是toString将其转换为您的本地时区:
let s = "2005-07-08T11:22:33+0000";
let d = new Date(Date.parse(s));
//此日志为我
//“2005年7月8日星期五13:22:33 GMT+0200(中欧夏季时间)”
//和其他东西给你
console.log (d.toString ())
//此日志
//星期五,2005年7月8日11:22:33 GMT
// for everyone
console.log (d.toUTCString ())
Javascript Date对象是时间戳-它们只包含从epoch开始的毫秒数。Date对象中没有时区信息。这个时间戳代表哪个日历日期(日、分、秒)是一个解释问题(其中一个是…字符串方法)。
上面的例子显示日期被正确地解析了——也就是说,它实际上包含了一个毫秒数,对应于GMT的"2005-07-08T11:22:33"。