[英]Moment.js - Converting UTC To Eastern Time
我正在使用moment-timezone.js
以通過 node.js 將 UTC 時間轉換為America/New_York
。 我這樣做:
var moment = require('moment-timezone');
moment.tz.add('America/New_York|EST EDT|50 40|0101|1Lz50 1zb0 Op0');
var now = new Date().toISOString();
now = moment(now).tz("America/New_York").toDate();
這似乎在我的本地機器上運行良好,但是當我在 AWS Lambda 上運行它時, now
時間仍然以 UTC 格式輸出。
我在這里做錯了嗎? 我真的不想為了獲得准確的紐約時間而使用 API。 夏令時是這里最大的挑戰。 謝謝!
首先,安裝時刻時區並使用timezone-with-data.js
安裝所有時timezone-with-data.js
或專門只加載您需要的時區
如果您知道某個日期采用 UTC moment.utc()
並希望將其轉換為東部時間,請使用moment.utc()
函數實際解析 UTC 日期字符串。 然后當你調用.tz()
時它會正確轉換:
moment.utc(date_string).tz("America/New_York")
如果您只是執行moment(date_string).tz("America/New_York")
,則默認情況下會在本地時區中解析時間,並且不會調整日期。
我想出來的方法是:
var now = ((moment(Date.now()).utcOffset('-0500').format('x'));
//Parse it into native JS object:
now = new Date(parseInt(now));
我想指出一些事情,但我希望能拯救一些人度過這讓我感到負擔的日子。 我的主要問題是,無論我在做什么,Amazon Lambda 都以 UTC 時間提供時間。 此問題的解決方法是簡單地設置 Node TZ 環境變量:
process.env.TZ = 'America/New_York';
東部標准時間 (EST) 比協調世界時 (UTC) 晚 5 小時。
使用 moment.js,您可以從 UTC 時區減去 5 小時。
moment.utc().subtract(5, 'hours').format("YYYY-MM-DD HH:mm:ss.SSS")
或者
如果您願意添加另一個庫,例如moment-timezone
。 你可以只使用:
moment().tz("America/New_York").format("YYYY-MM-DD HH:mm:ss.SSS")
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.