新的date()在错误的时区

在这篇文章的时候,我目前的时间是2017-01-10T19:23:00.000Z但是new Date()给了我2017-01-11T00:23:19.521Z比我目前的时区提前了5个小时。 这会影响我的数据存储在MongoDB中的方式。 我知道我可以设定时间到5小时前使用

 var datetime = new Date(); datetime.setHours(datetime.getHours()-5); 

但是我会更喜欢更好的方式来做到这一点。 我试着用这个。 我仍然有同样的时间。 在我的代码的其他部分我得到Tue Jan 10 2017 19:54:30 GMT-0500 (EST)不同于最初的时间。 如果有人能指出这里有什么问题,我会很高兴。

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

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

输出是ISO-8601格式的string,其中时区偏移在当地时区有效。

你可以用很多代码来读取Date对象的各种属性,从这些值中构build一个string。 但是它不是以这种方式内置到Date对象中的。

此外,每当您尝试通过时区偏移调整Date对象时,请注意,您只是简单地select不同的时间点。 你实际上并没有改变Date对象使用的时区的行为。

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