使用momentjs在特定时区设置特定时间

时间:2013-11-01 16:11:09

标签: javascript momentjs

我正在制作网络应用,我的用户需要选择特定时区的特定时间。例如,选择 2013年11月8日中午在纽约市。不幸的是,我无法在momentjs对象中正确设置日期。

这是一个jsfiddle,可以重现我的问题。我做错了什么?

var data = {date: 8, hour: 12, minute: 0, month: 10, year: 2013}
var ret = moment({}).tz("America/New_York");
_.each(data, function(val,key){
   ret.set(key, val);
});
$("h1").text("the date should be the 8 th but it is the "+ ret.utc().get("date")) // 7
非常感谢,

迪迪埃

1 个答案:

答案 0 :(得分:0)

你的脚本有点复杂,但它似乎在小提琴中工作。至少,我在谷歌浏览器中没有出现错误。其他浏览器可能会有所不同。

然而,它并不总能产生正确的结果。初始化时,您将在纽约设置“现在”的时刻。但是,您可以一次替换一个属性的值。这并没有考虑到由于夏令时波动,“now”可能没有与您喂食它的日期相同的偏移量。

Moment-timezone目前无法在特定区域中从创建片刻。这已在issue #11中请求,并且已在#25中合并了拉取请求,但尚未发布。如果您想使用源代码中的开发版本,可以立即试用,如下所示:

var m = moment.tz("2013-10-08T12:00:00","America/New_York");