簡體   English   中英

toLocaleDateString 返回意外的格式化時間

[英]toLocaleDateString returns unexpected formatted time

下面的調用在最新的 Chrome 和 Opera 中返回24:00 ,而之前返回00:00 ,這是設計行為嗎?

 const [, time] = new Date(2020, 1, 1, 0, 0).toLocaleDateString("en-us", { hour12: false, hour: "2-digit", minute: "2-digit" }).split(", "); console.info(time); // 24:00

使用hourCycle而不是hour12並將其設置為h23

 const [, time] = new Date(2020, 1, 1, 0, 0).toLocaleDateString("en-us", { hourCycle: "h23", hour: "2-digit", minute: "2-digit" }).split(", "); console.info(time); // 00:00

在我看來,Chrome(或其 V8 引擎)已更新以匹配規范,該規范在步驟 18(e)(vi) 中說:

如果p是“小時”並且 dateTimeFormat.[[HourCycle]] 是“h24”,那么如果v是 0,讓 v 是 24。

該規范沒有改變,但看起來他們必須修復一個錯誤。 (我沒有立即在 V8 或 Chromium 問題列表中找到一個,但是......)

有趣的是,Firefox 顯示00:00 ,而不是24:00

暫無
暫無

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

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