我想使用moment.js将输入时刻转移到不同的时区并获取其时间戳。
moment.tz(moment(), "Pacific/Auckland").valueOf();
问题是,当我这样做时,moment.tz(
)对象看起来很好,但valueOf()
方法以某种方式计算回到我的计算机上设置的时区。
我的做法出了什么问题?
非常感谢。
编辑1
moment.tz(moment(), "Pacific/Auckland").format();
给我正确的时间字符串
moment.tz(moment(), "Pacific/Auckland").valueOf("x");
给了我几毫秒,但是在我当地的时间再次,而不是在“太平洋/奥克兰”时间
所以毫秒计算毫秒将其转换回当地时间,但为什么呢?还有什么正确的方法来获得预期时区的毫秒数?
答案 0 :(得分:3)
我认为可能只是概念上缺乏对时间戳实际上是什么的理解。
假设我现在的时间是:
04/25/2016 @ 10:21 am(UTC-7)
这一刻的时间戳是什么?
1461604867
什么是UTC时间?
04/25/2016 @ 5:21 pm(UTC)
这一刻的时间戳是什么?
<强> 1461604867 强>
什么,同样,为什么?
时刻是相同的时间戳,无论它在哪个时区。当你调用moment()时,它指的是现在,这个特殊的时刻在大空间时间连续体。与Date.now()相同。实际上,你读到这一刻的那一刻,仍然是你,我在哪里,在日本,在南极洲,在叙利亚,在格陵兰岛等地的完全相同的时刻。恰巧这一刻在视觉上得到了表现(时间字符串)人类在每个区域以不同的方式。
时刻时区不会影响它存储的实际Date对象。它只影响日期的视觉表示。视觉表示随时区变化。这就是为什么你不会得到不同的时间戳。
答案 1 :(得分:0)
var time = moment.tz("2016-04-25 12:00", "Pacific/Auckland");
然后
time.format();
试试这个