簡體   English   中英

無法使用 Moment.JS 將字符串日期和時間轉換為格式

[英]Unable to convert the string date and time to format using Moment.JS

我有一個日期格式,如 date =“20190516”和時間如:“073000”,我正在嘗試使用 moment js 將其轉換為正常日期格式,但我收到NAN錯誤

let dat = "20190516"
let form = moment(dat).format('YYYY-MM-DD');
alert(form);

let dat = "073000"
let form = moment(dat).format('HH:MM:ss');
alert(form);

第一種格式

const newFormat = moment('20190516','YYYYMMDD').format('YYYY-MM-DD');
alert(newFormat);

第二種格式

const newFormat = moment('073000','HHmmss').format('HH:mm:ss');
alert(newFormat);

由於您以字符串格式傳遞時間並且它不在 ISO 8601 中,您需要定義它是什么格式,否則您將收到來自moment.js的 function 已棄用警告

如果您沒有在您的情況下定義格式類型,則需要添加HHmmss否則您將收到此類警告。

警告:瀏覽器對解析字符串的支持不一致。 因為沒有關於應該支持哪些格式的規范,所以在某些瀏覽器中有效的內容在其他瀏覽器中無效。為了解析除 ISO 8601 字符串以外的任何內容的一致結果,您應該使用String + Format

moment 官方文檔中閱讀有關字符串類型和日期的更多信息

運行下面的代碼段。

 let time = "073000" let timeFormatted = moment(time, 'HHmmss').format('HH:mm:ss'); console.log('Time: '+ timeFormatted) let date = "20190516" let dateFormatted = moment(date).format('YYYY-MM-DD'); console.log('Date: '+ dateFormatted)
 <script src="https://cdnjs.cloudflare.com/ajax/libs/moment.js/2.23.0/moment.min.js"></script>

您需要告訴 Moment 如何解析073000 ,因為它不是 ISO 8601 或 RFC 2822 日期時間格式,因此無法推斷。

從那一刻起文檔

從字符串創建時刻時,我們首先檢查字符串是否與已知的 ISO 8601 格式匹配,然后檢查字符串是否與 RFC 2822 日期時間格式匹配,如果已知格式為未找到。

let dat = "20190516";
let form = moment(dat).format("YYYY-MM-DD");
alert(form);

let dat = moment("073000", "HHmmss");
let form = moment(dat).format("HH:mm:ss");
alert(form);

順便說一句, MM用於格式化月份,而mm用於格式化分鍾。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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