[英]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();
給了我正確的時間字符串
moment.tz(moment(), "Pacific/Auckland").valueOf("x");
給了我毫秒,但又是在我的當地時間,而不是在“太平洋/奧克蘭”時間
所以不知何故,毫秒的計算將其轉換回本地時間,但為什么呢? 在預期的時區獲得毫秒的正確方法是什么?
我認為可能只是概念上缺乏對時間戳實際含義的理解。
假設我現在所在的時間是:
2016年4月25日上午10:21(UTC-7)
現在的時間戳是什么?
1461604867
什么是UTC時間?
2016年4月25日下午5:21(UTC)
現在的時間戳是什么?
1461604867
什么,一樣,為什么?
時刻是相同的時間戳,無論它處於哪個時區。當您調用moment()時,它都指向正確的時間,即大時空連續體中的這個特定時刻。 與Date.now()相同。 實際上,您正在閱讀的那一刻,仍然是您所在的位置,我在日本,在南極洲,在敘利亞,在格陵蘭等地的同一時刻。恰好發生了這一時刻在視覺上得以體現(時間字符串)由人類在每個區域以不同的方式進行。
Moment時區不會影響它存儲的實際Date對象。 它僅影響日期的視覺表示。 視覺表示隨時區變化。 這就是為什么您不會獲得其他時間戳記的原因。
var time = moment.tz("2016-04-25 12:00", "Pacific/Auckland");
然后
time.format();
嘗試這個
.valueOf()
的結果總是以 UTC 為單位的毫秒數。
您可以將毫秒轉換回您想要的時區,如下所示:
const moment= Moment(milliseconds)
moment.tz(TIME_ZONE).format("LT")
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.