[英]How do I specify timezone such that moment will give proper date for that timezone?
[英]How do I specify the timezone and date object format on moment correct such that I do not get Invalid date and a moment is deprecated warning?
我正在嘗試設置日期格式和時區,然后當我嘗試格式化 moment 以提取日期時,它只返回無效日期。
當我這樣做時,我沒有得到過時的時刻。
let data = moment(date, 'YYYY-MM-DD HH:MM').tz(TIMEZONE); //moment('2014-06-01 12:00:00Z').tz(TIMEZONE); // TIMEZONE = 'America/New_York'
console.log(data.format('MM/DD/YYYY'))
let value = inventoryBase.lastUpdated + SPACE + data.format('MM/DD/YYYY') + ' at ' + data.format('LT') + SPACE + moment.tz([2012, 0], TIMEZONE).zoneAbbr();
value = value + ' by ' + lastUpdated.editedBy;
但是 value 的輸出不正確:
Last updated Invalid date at Invalid date EST by System
當我這樣做時,我得到的時刻已被棄用。
let data = moment(date).tz(TIMEZONE); //moment('2014-06-01 12:00:00Z').tz(TIMEZONE);
let value = inventoryBase.lastUpdated + SPACE + data.format('MM/DD/YYYY') + ' at ' + data.format('LT') + SPACE + moment.tz([2012, 0], TIMEZONE).zoneAbbr();
value = value + ' by ' + lastUpdated.editedBy;
但是 value 的輸出是正確的:
Last updated 05/01/2019 at 3:59 AM EST by System
不推薦使用時刻錯誤:
Deprecation warning: value provided is not in a recognized RFC2822 or ISO
format. moment construction falls back to js Date(), which is not reliable
across all browsers and versions. Non RFC2822/ISO date formats are
discouraged and will be removed in an upcoming major release. Please refer
to http://momentjs.com/guides/#/warnings/js-date/ for more info.
請嘗試以下操作:
const data = moment.tz(date, 'YYYY-MM-DD HH:mm:ssZ', TIMEZONE);
const value = `${inventoryBase.lastUpdated} ${data.format('L [at] LT zz')} by ${lastUpdated.editedBy}`;
其他幾點:
在您的原始代碼中,它無法正常工作,因為您的格式字符串與數據格式不匹配。 MM
是月,而mm
是分鍾,您沒有包括秒。
在您的第二次嘗試中,您收到了棄用警告,因為您提供的數據格式不在已知支持的字符串列表中。
您將區域縮寫用於任意日期而不是相關日期。 時區縮寫因日期而異,因此最好從您使用的同一時刻開始獲取。
在同一個輸出字符串中混合標記化格式( MM/DD/YYYY
)和區域設置感知格式( LT
)是不好的。 我改為使用L
,因為它獲取您正在使用的語言環境的日期格式。
因為您的數據中有一個Z
,所以它將始終被視為 UTC。 因此,您可以直接跳過使用moment.tz
解析它。 如果您沒有Z
,那么您將通過moment.utc(data, format).tz(timezone)
代替。
我在回答中使用了 JavaScript 模板文字,因為我認為對於這種情況,它們比串聯更清晰。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.