簡體   English   中英

如何在正確的時刻指定時區和日期對象格式,以便我不會收到無效日期和不推薦使用的時刻警告?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM