错误时区的新Date()

时间:2017-01-11 00:56:01

标签: javascript node.js datetime timezone isodate

在本文发布时,我的当前时间为2017-01-10T19:23:00.000Z ,但new Date()比我现在的时区提前5小时2017-01-11T00:23:19.521Z。这会影响我的数据存储在MongoDB中的方式。我知道我可以使用

将时间设置为5小时前
var datetime    = new Date();
 datetime.setHours(datetime.getHours()-5); 

但我希望有更好的方法来做到这一点。 I tried using this.我还有同样的时间。在我的代码的其他部分,我得到Tue Jan 10 2017 19:54:30 GMT-0500 (EST)与初始时间不同。如果有人能指出这里的错误,我会很高兴。

3 个答案:

答案 0 :(得分:2)

使用moment.js是完成所要求的最简单方法。

moment().format() // "2017-01-11T13:56:15-05:00"

输出为ISO-8601格式的字符串,时区偏移在您的本地时区生效。

您可以使用大量代码来自己执行此操作,这些代码读取Date对象的各种属性,从这些值构建字符串。但它并没有以这种方式内置到Date对象中。

另外,请注意,每当您尝试按时区偏移调整Date对象时,您只需选择一个不同的时间点。您实际上并没有更改Date对象使用的时区的行为。

答案 1 :(得分:0)

如果您不想使用任何外部JS文件,则只需使用以下代码即可获取当前时区。

print, while glob '{A,B,C,D,#,@,a,d,e,f}'x4

答案 2 :(得分:-6)

如果您有权访问php.ini,可以将date.timezone设置为正确的时区,有效时区的完整列表可以在php.net/manual/timezones.php