一尘不染

解析日期而不带时区javascript

javascript

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

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

返回时间:2005年7月8日星期五, 格林尼治标准时间 +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"));

返回相同的结果

我想解析时间:

  1. 没有时区。

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

  3. 只需将字符串简单地传递到Date构造函数即可(无需原型方法)。

  4. 我必须提供Date对象,而不是String


阅读 440

收藏
2020-05-01

共1个答案

一尘不染

日期已正确解析,只是toString会将其转换为您的本地时区:

let s = "2005-07-08T11:22:33+0000";

let d = new Date(Date.parse(s));



// this logs for me

// "Fri Jul 08 2005 13:22:33 GMT+0200 (Central European Summer Time)"

// and something else for you



console.log(d.toString())



// this logs

// Fri, 08 Jul 2005 11:22:33 GMT

// for everyone



console.log(d.toUTCString())

Javascript Date对象是时间戳-
自时代起它们仅包含毫秒数。Date对象中没有时区信息。此时间戳表示哪个日历日期(天,分钟,秒)取决于解释(to...String方法之一)。

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

2020-05-01