由于瀏覽器不一致,有很多關于不使用的警告new Date(string)(或Date.parse(string)javascript 中的等價物。MDN有這樣的說法:
不建議使用 Date.parse,因為直到 ES5,字串的決議完全依賴于實作。不同主機決議日期字串的方式仍有很多差異,因此應該手動決議日期字串(如果要容納許多不同的格式,庫可以提供幫助)。
但是,當您繼續閱讀時,大多數關于特定于實作的行為的警告似乎都是針對這些場景的:
- 舊瀏覽器(例如ES5 之前的舊瀏覽器)
- 非 ISO 8601 輸入(例如
"March 6th 2015") - 不完整的 ISO 8601 輸入(例如
"2015-06-03",沒有時間或時區)
我想知道的是,鑒于這兩個假設:
- 現代瀏覽器(例如,從 2020 年開始的任何瀏覽器)
- 完整的 ISO 8601 輸入(例如
"2021-11-26T23:04:00.778Z")
我可以可靠地使用new Date(string)嗎?
uj5u.com熱心網友回復:
是的。JavaScript 中可接受的日期字串的格式是標準化的:
ECMAScript 基于 ISO 8601 日歷日期擴展格式的簡化定義了日期時間的字串交換格式。格式如下:
YYYY-MM-DDTHH:mm:ss.sssZ
來自ECMAScript 當前草稿 ,標題為“日期時間字串格式”。
這是決議規范中提供的日期字串的唯一標準,因此日期庫的目標是在呼叫new Date或之前將日期格式化為這種格式Date.parse。我無法評論 ISO 標準的“簡化”是什么,但帖子中詢問的格式與 [ECMAScript] 標準的格式相匹配。
請注意,該標準繼續說明僅日期形式
YYYY
YYYY-MM
YYYY-MM-DD
被接受并且時間格式,可選地后跟UTC偏移量,
THH:mm
THH:mm:ss
THH:mm:ss.sss
可以在日期組件之后使用。
uj5u.com熱心網友回復:
是的,使用 ISO 8601 輸入是可靠的new Date。
正如您參考的檔案所示,這是用 ES5 標準化的,根據MDN 的兼容性表,Internet Exploder 8 (RIP) 是最后一個不支持它的瀏覽器。
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/370311.html
標籤:javascript 日期 跨浏览器
上一篇:OracleSQLDeveloper-日期排序不正確(?)
下一篇:根據重復值和以前的值更新日期值
