Moment.js timezone valueOf 返回错误的时间戳
Moment.js timezone valueOf returning wrong timestamp
我想使用 moment.js 将输入时刻转移到不同的时区并获取其时间戳。
moment.tz(moment(), "Pacific/Auckland").valueOf();
问题是,当我执行此操作时,moment.tz(
) 对象看起来不错,但 valueOf()
方法以某种方式将其计算回我计算机上设置的时区。
我的方法有什么问题?
非常感谢。
编辑 1
moment.tz(moment(), "Pacific/Auckland").format();
给了我正确的时间 string
moment.tz(moment(), "Pacific/Auckland").valueOf("x");
给了我毫秒数,但又是在我当地时间,而不是 "Pacific/Auckland" 时间
所以不知何故,毫秒的计算将其转换回本地时间,但为什么呢?在预期时区中获取毫秒数的正确方法是什么?
var time = moment.tz("2016-04-25 12:00", "Pacific/Auckland");
然后
time.format();
试试这个
我认为可能只是在概念上缺乏对时间戳实际含义的理解。
假设我所在的当前时间是:
04/25/2016 @10:21am (UTC-7)
此时的时间戳是多少?
1461604867
UTC 时间是多少?
04/25/2016 @5:21pm (UTC)
此时的时间戳是多少?
1461604867
什么,一样,为什么?
一个时刻是相同的时间戳,不管它在哪个时区。 当你调用 moment() 时,它指的是现在,这个特定的时刻宏大 space 时间连续体中的时间。与 Date.now() 相同。实际上,你正在阅读这篇文章的那一刻,仍然是你所在的那一刻,我所在的那一刻,在日本,在南极洲,在叙利亚,在格陵兰等地。碰巧的是,这一时刻被视觉化了(时间字符串)由人类在每个区域以不同的方式。
时刻时区不影响它存储的实际日期对象。它只影响日期的 视觉表示。 视觉表示因时区而异。这就是为什么您不会得到不同的时间戳。
.valueOf()
的结果在 UTC 中始终为毫秒。
您可以像这样将毫秒转换回您想要的时区:
const moment= Moment(milliseconds)
moment.tz(TIME_ZONE).format("LT")
我想使用 moment.js 将输入时刻转移到不同的时区并获取其时间戳。
moment.tz(moment(), "Pacific/Auckland").valueOf();
问题是,当我执行此操作时,moment.tz(
) 对象看起来不错,但 valueOf()
方法以某种方式将其计算回我计算机上设置的时区。
我的方法有什么问题?
非常感谢。
编辑 1
moment.tz(moment(), "Pacific/Auckland").format();
给了我正确的时间 string
moment.tz(moment(), "Pacific/Auckland").valueOf("x");
给了我毫秒数,但又是在我当地时间,而不是 "Pacific/Auckland" 时间
所以不知何故,毫秒的计算将其转换回本地时间,但为什么呢?在预期时区中获取毫秒数的正确方法是什么?
var time = moment.tz("2016-04-25 12:00", "Pacific/Auckland");
然后
time.format();
试试这个
我认为可能只是在概念上缺乏对时间戳实际含义的理解。
假设我所在的当前时间是:
04/25/2016 @10:21am (UTC-7)
此时的时间戳是多少?
1461604867
UTC 时间是多少?
04/25/2016 @5:21pm (UTC)
此时的时间戳是多少?
1461604867
什么,一样,为什么?
一个时刻是相同的时间戳,不管它在哪个时区。 当你调用 moment() 时,它指的是现在,这个特定的时刻宏大 space 时间连续体中的时间。与 Date.now() 相同。实际上,你正在阅读这篇文章的那一刻,仍然是你所在的那一刻,我所在的那一刻,在日本,在南极洲,在叙利亚,在格陵兰等地。碰巧的是,这一时刻被视觉化了(时间字符串)由人类在每个区域以不同的方式。
时刻时区不影响它存储的实际日期对象。它只影响日期的 视觉表示。 视觉表示因时区而异。这就是为什么您不会得到不同的时间戳。
.valueOf()
的结果在 UTC 中始终为毫秒。
您可以像这样将毫秒转换回您想要的时区:
const moment= Moment(milliseconds)
moment.tz(TIME_ZONE).format("LT")