JS时区不是最新的

时间:2014-07-29 19:07:04

标签: javascript timezone momentjs

我刚刚创建了一个博客脚本,但是当我添加评论时 即使我的PC上的时钟是2014-07-29 18:55:00,数据库中的时间戳也是2014-07-29 20:55:00

所以我想根据时区改变时间。

所以我尝试使用此代码(时间戳为2014-07-29 18:55:00):

var UTC = moment.tz(timestamp, "UTC");
timestamp = UTC.clone().tz(timezone).format('YYYY/MM/DD H:mm:ss');

注意:使用以下代码设置window.timezone

var tz = jstz.determine();
var timezone = tz.name();

我想要离开的时间是2014/07/29 20:55:00,但我明白了这一点:2014/07/29 17:53:47

我在上面的代码中使用了以下库:

希望有人了解最新情况。

注意:我住在Europe/Denmark,其中包含时区UTC/GMT +2 hours

2 个答案:

答案 0 :(得分:2)

除了脚本,moment-timezone还需要数据才能运行。如果您没有加载数据,则在版本0.1.x中它将使用本地时区 - 就像您刚刚调用moment()而未指定任何tz一样。 This has been fixed即将发布的0.2.0版本,这样它就会出错而不是默默地做错事。

通常情况下,您可以使用the data builder为您感兴趣的时区提供数据。但是,它当前处于脱机状态,因为上一版本中的数据格式发生了变化而作者还没有时间来完成所需的更新。

与此同时,您可以使用其中一个“数据包含”版本,可以在the main page的顶部下载 - 例如,使用moment-timezone-2010-2020.js代替moment-timezone.js。< / p>

此外,您使用jsTimeZoneDetect后 - 您应该测试jstz.determine()返回的值,以确保它确实是您期望的时区。众所周知,+2偏移难以测试。查看一些the known issues

答案 1 :(得分:1)

你可以set the timezone

moment().tz("Europe/Denmark").format();