getUTCDate() 函数在不同时区的问题



我遇到了非常奇怪的问题,请查看下面的两个示例。

我的开发环境时区:GMT+0500

当我使用以下功能时:

var d = new Date("Tue Mar 18 2014 00:00:00 GMT+0500");
var n = d.getUTCDate(); 

n = 17,这是正确的(返回特定本地时间,日期时间的UTC日期),并且在我的时区中一切正常。

我的客户时区:GMT+0000

var d = new Date("Tue Mar 18 2014 00:00:00 GMT+0000");
var n = d.getUTCDate(); 

n = 18 这是错误的

有人说清楚,这是为什么?如何解决这个问题?

任何帮助将不胜感激。

n = 18 这是错误的

不,不是。 您提供了 GMT+0000,它与 GMT 或 UTC 相同。 因此,getUTCDate的结果当然是您传入的日期。

我想你很困惑,因为你的措辞

我的开发环境时区:GMT+0500

我的客户时区:GMT+0000

时区不是数字偏移量。 时区可以有一个偏移量,也可以有多个偏移量,并包括偏移量随时间变化的历史记录。 请参阅时区标签维基中的"时区!=偏移量"。

因此,这些可能是您和您的客户的当前偏移量,但这并不一定意味着它们总是处于相同的偏移量中。 如果您的客户在英国,那么他们现在在 +0000,但他们很快就会在 +0100。 详情请看这里。

您的第一个日期是使用时区显式构造的,导致 UTC 日期为 17。 在时区的18日午夜,比UTC(GMT)5小时,它仍然是伦敦的第17天。您的第二个日期是使用明确的 UTC 时区构建的。换句话说,在您的第二个约会日期指示的时间,它是第一个时区的凌晨 5 点。

相关内容

  • 没有找到相关文章

最新更新