ISO8601是日期和時間格式的國際標準,用於表示日期、時間和時間間隔。它於1988年首次發佈,最近一次修訂於2019年。ISO8601的標準化程度高、靈活性強,因此被廣泛應用於科學、工業、航空和金融等領域。
一、ISO8601日期轉換
ISO8601日期格式是YYYY-MM-DD(年-月-日), 主要用於表示日期。例如,1987年3月25日可寫為1987-03-25。
而在JavaScript中可以使用下列代碼進行日期字符串和Date對象互相轉換:
//將日期字符串轉換為Date對象 const dateStr = '1987-03-25'; const dateObj = new Date(dateStr); console.log(dateObj); //Wed Mar 25 1987 00:00:00 GMT+0800 (中國標準時間) // 將Date對象轉換為日期字符串 const date = new Date('1987-03-25'); const dateStr = date.toISOString().slice(0, 10); console.log(dateStr); // 1987-03-25
使用這些方法可以方便地進行日期的格式轉化。
二、ISO8601時間轉換
ISO8601時間格式是HH:MM:SS(小時:分鐘:秒),主要用於表示時刻。例如,早上8點15分30秒可寫為08:15:30。
類似日期格式,JavaScript也提供了日期字符串和Date對象的互相轉換方法:
// 將時間字符串轉換為Date對象 const timeStr = '08:15:30'; const now = new Date(); const timeObj = new Date(now.toDateString() + ' ' + timeStr); console.log(timeObj); //Wed Jun 09 2021 08:15:30 GMT+0800 (中國標準時間) // 將Date對象轉換為時間字符串 const timeObj = new Date('Wed Jun 09 2021 08:15:30 GMT+0800 (中國標準時間)'); const timeStr = timeObj.toLocaleTimeString({}, {timeStyle: 'medium'}); console.log(timeStr); // 上午8:15:30
類似這樣的互相轉換可以應用於開發中的各種場合。
三、ISO8601時間格式Z是啥
ISO8601格式中常見的術語Z代表UTC時間,是從格林威治時間(GMT)開始沿赤道地方向劃分的24個時區之一。
為了將本地時間表示成標準時間,您可以使用以下代碼將時間字符串解析為UTC時間的Date對象:
// 將本地時間字符串轉換為UTC時間的Date對象 const dateStr = '1987-03-25T08:15:30+08:00' const dateObj = new Date(dateStr); console.log(dateObj.toUTCString()); // Tue, 24 Mar 1987 00:15:30 GMT
可以看到代碼中的「+08:00」是與UTC時間差值的表示方法之一。
四、ISO8601時間格式
在ISO8601中,時間格式可以包括小時、分、秒,也可以包括以豪秒、微秒或納秒為單位的小數部分。以下是時間格式的示例:
08:15:30 // 小時、分、秒 15:30:00.123 // 小時、分、秒和毫秒 15:30:00.123456 // 小時、分、秒和微秒 15:30:00.123456789 // 小時、分、秒和納秒
這種靈活性使得ISO8601在時間記錄的各種場合中得到了廣泛的應用。
五、ISO8601最新版
目前,ISO8601的最新版本是2019年發佈的ISO 8601-1:2019,它提供了關於日期和時間表示的更多細節。
使用最新版的ISO8601規範來處理日期時間格式,可以在某些特殊的用途下取得更加精確的效果。
六、ISO8601時間轉化
在實際開發中,時常需要對用戶上傳的時間進行處理和轉化,ISO8601提供了相關的標準化方法:
// 將時間字符串轉換為ISO8601格式 const dateStr = '1987年3月25日'; const dateObj = new Date(dateStr); const isoDateStr = dateObj.toISOString(); console.log(isoDateStr); // 1987-03-24T16:00:00.000Z // 將ISO8601格式的時間字符串轉換為本地時間字符串 const isoDateStr = '1987-03-25T08:15:30Z'; const dateObj = new Date(isoDateStr); const localDateStr = dateObj.toLocaleString(); console.log(localDateStr); // 1987/3/25 下午4:15:30
可以看到,使用ISO8601規範化的時間格式可以被輕鬆地轉換成通用的本地時間格式。
七、中國是否加入ISO8601
1992年,中國政府正式以GB/T 7408-1992標準引入了ISO8601的日期時間表示方式,使其成為了中國的國家標準。
因此,在中國使用ISO8601表示日期和時間已經是常態。
結語
ISO8601已被廣泛認可並應用於多個領域,特別是在開發中,它的強大和規範化足以解決各類日期和時間相關的問題。
原創文章,作者:小藍,如若轉載,請註明出處:https://www.506064.com/zh-hk/n/295972.html