大香大香伊人在钱线久久,亚洲日韩欧美国产高清αv,日本强伦姧人妻久久影片,亚洲国产成人欧美在线观看

網易首頁 > 網易號 > 正文 申請入駐

為什么在JavaScript中2025/05/28和2025-05-28是不同的日期?

0
分享至


在日常生活中,“2025/05/28” 和 “2025-05-28” 可能只是兩種日期寫法的區別——前者看起來更像美式格式,后者則更標準化一些。但在編程世界里,這種寫法的不同,可能意味著完全不同的時間點。特別是在 JavaScript 中,這兩者居然會被解析成不同的一天!

這種現象最近在 Hacker News 上引發了不少關注,不少開發者都表示曾在這類問題上“踩坑”甚至 debug 到深夜。一位網友就評論說:“我調了半天的日期 bug,最后才發現是字符串寫法惹的禍。”還有人驚呼:“我們都以為是用戶格式輸錯,結果是 JavaScript 的鍋。”

對此,開發者 Brandon Dong 專門寫了一篇《Why are 2025/05/28 and 2025-05-28 different days in JavaScript?》文章深入分析了背后的原因,不僅揭示了 Date 構造函數令人費解的行為,還帶你回顧了一段瀏覽器與 ECMAScript 標準之間十多年來“反復橫跳”的歷史。接下來就讓我們一起看看,JavaScript 為什么會把明明寫著“2025 年 5 月 28 日”的兩個字符串,解析成兩個不一樣的時間點。

原文鏈接:https://brandondong.github.io/blog/javascript_dates/

作者 | Brandon Dong

翻譯 | 蘇宓

出品 | CSDN(ID:CSDNnews)

在搭建個人網站的過程中,我遇到了一個奇怪的現象:

console.log(new Date('2025/05/28').toDateString()); // Wed May 28 2025
console.log(new Date('2025-05-28').toDateString()); // Tue May 27 2025
// Bonus: (omit leading 0)
console.log(new Date('2025-5-28').toDateString()); // Wed May 28 2025

你在自己電腦上運行時可能會得到不同的結果!


發生了什么?

在 JavaScript 中,一個 Date 對象始終表示一個時間點(即自 Unix 紀元以來的毫秒數)。這一點在輸出完整時間字符串時更為明顯:

const date = new Date('2025/05/28');
console.log(date); // Wed May 28 2025 00:00:00 GMT-0700 (Pacific Daylight Time)
console.log(date.toDateString()); // Wed May 28 2025

在這種情況下,傳入的日期字符串被解釋為本地時區的時間戳。toDateString() 也相對于本地時間操作,因此我們得到了相同的日期。

而'2025-05-28' 的不同之處在于解析行為;該字符串被解釋為 UTC 時間,因此最終處于不同的時間點:

const date = new Date('2025-05-28');
console.log(date); // Tue May 27 2025 17:00:00 GMT-0700 (Pacific Daylight Time)
console.log(date.toDateString()); // Tue May 27 2025

為什么會有這種差異?

瀏覽器日期解析的奇妙旅程

在查閱了 Chrome/Firefox/Safari 的代碼和提交歷史后,我梳理出了一個時間線:

  • 2009 年:各大瀏覽器支持解析各種日期時間格式。當字符串中沒有明確指定時區時,它們默認按本地時間解析,包括像 '2025/05/28' 這樣的日期格式。

  • 同年晚些時候:即將發布的 ES5 標準提出了一種基于 ISO 8601 的新日期格式標準,包含一種純日期形式:'2025-05-28',還有另一種日期+時間形式:'2025-05-27T17:00-07:00'(其中時區偏移可以省略)

    那么對于沒有偏移信息的純日期形式或省略偏移的日期時間形式,規范是怎么說的呢?答案是:字符串的時間可以被解釋為本地時間、UTC 時間或其他時區時間,取決于字符串的內容。

  • Firefox 是第一個實現這一要求的瀏覽器。他們選擇將僅日期形式解釋為 UTC 時間,將缺少偏移量的日期時間形式解釋為本地時間。這不僅導致 '2025/05/28' 和 '2025-05-28' 之間存在差異,還出現了令人驚訝的行為,例如:


console.log(new Date('2025-05-28')); // Tue May 27 2025 17:00:00 GMT-0700
console.log(new Date('2025-05-28T00:00')); // Wed May 28 2025 00:00:00 GMT-0700

  • 接下來是 Chrome,它選擇對這兩種情況都使用本地時間。
  • 然后是 Safari,但其解析邏輯有 bug:要求必須提供日期、時間和偏移字段。

  • 2011 年年中發布的 ES5.1 進一步補充:如果缺少時區偏移,默認用 Z(即 UTC)。

  • Chrome 更新了其實現,對兩種情況都按 UTC 時間解析。

  • Safari 修復 bug,也改為使用 UTC 時間。

  • 隨后有人指出這種規范本身存在一個 bug:指出 ISO 8601 實際上規定“無偏移的日期時間”應被解釋為本地時間。2015 年,ES6 將之前的說法替換為:如果省略時區偏移,日期時間應被解釋為本地時間。

  • Chrome 切換回對兩種情況都使用本地時間。

  • 之后又有人抱怨 Chrome 在解析純日期格式時破壞了兼容性,Chrome 又改回 UTC。

  • Chrome 進一步向規范提交問題。經過討論后,達成折中方案。

  • 純日期形式→ UTC(Firefox 風格)

  • 缺偏移的日期時間形式→ 本地時間

  • ES7正式采用上述行為。Chrome 率先實現,隨后 Safari 也跟進。

到今天為止,這個規則仍在沿用:只要傳入的是合法的 ISO 日期字符串(如 '2025-05-28'),構造函數就會默認使用 UTC,否則一律用本地時間。

這種行為一直保持到今天,其中 Date 構造函數接受的每個可能的字符串都回退到本地時間,除了像 '2025-05-28' 這樣的有效 ISO 日期字符串。

看這個時間線,有趣的是,盡管它被設計為標準化格式,但從 2009 年發布到 2020 年初,主要瀏覽器在缺少偏移量的情況下從未有過一致的行為。同時,Chrome 在解析 '2025-05-28T00:00' 時搞笑地從本地→UTC→本地→UTC→本地來回切換。而這一切只是為了最終采用 Firefox 2009 年的行為,在我看來,這是所有行為中最不直觀的。


Temporal 呢?

對于不知道的人來說,JavaScript Temporal 即將到來:這是一組新的日期和時間 API,旨在取代 Date 對象。

我們最初的整個日期解析問題源于時區的歧義,但在許多情況下,我們希望將僅日期的字符串完全視為日期。例如,當我說今年的圣誕節是 2025-12-25 時,我并不是指 2025-12-25T00:00:00.000Z 這個通用的時間點。

雖然 Date 只能表示后者,但 Temporal 提供了純日期(即沒有時區的日期)的選項。'2025-12-25' 就只是 '2025-12-25',完全避開了解析歧義的問題。

但是,如果確實想將僅日期的字符串解析為一個時間點呢?當字符串本身缺少時區時,Temporal 會選擇哪個時區?

答案是:根本不會讓你這么干。

Temporal 在這方面是嚴格錯誤(hard error):必須明確提供時區偏移或時區標識符,否則它就直接拋錯,根本不給你機會“犯老毛病”。

2025 全球產品經理大會

2025 年 8 月 15–16 日

北京·威斯汀酒店

2025 全球產品經理大會將匯聚互聯網大廠、AI 創業公司、ToB/ToC 實戰一線的產品人,圍繞產品設計、用戶體驗、增長運營、智能落地等核心議題,展開 12 大專題分享,洞察趨勢、拆解路徑、對話未來。

特別聲明:以上內容(如有圖片或視頻亦包括在內)為自媒體平臺“網易號”用戶上傳并發布,本平臺僅提供信息存儲服務。

Notice: The content above (including the pictures and videos if any) is uploaded and posted by a user of NetEase Hao, which is a social media platform and only provides information storage services.

相關推薦
熱點推薦
郭正亮神預判:為了全球資金流向美國,6月一定會挑起中東戰爭!

郭正亮神預判:為了全球資金流向美國,6月一定會挑起中東戰爭!

大歪歪
2025-06-14 16:48:22
30歲韋世豪6秒無解一條龍:華麗1V2單干+對手被晃暈 暴力抽射破門

30歲韋世豪6秒無解一條龍:華麗1V2單干+對手被晃暈 暴力抽射破門

風過鄉
2025-06-14 20:12:14
萬萬沒想到!讓代駕失業的竟然是禁酒令,還是受傷最嚴重的那一個

萬萬沒想到!讓代駕失業的竟然是禁酒令,還是受傷最嚴重的那一個

火山詩話
2025-06-14 17:10:25
伊朗要變天了

伊朗要變天了

戰爭研究所
2025-06-13 23:40:34
羅帥宇墜亡案迎來新進展:家屬發聲,衛健委、公安介入!

羅帥宇墜亡案迎來新進展:家屬發聲,衛健委、公安介入!

深析古今
2025-06-13 22:33:28
南航“美女經理”:除了生理期就沒閑過,兩年半和上級開房410次

南航“美女經理”:除了生理期就沒閑過,兩年半和上級開房410次

就一點
2025-06-13 16:45:25
恥辱!香港運動員奪冠拒唱國歌,這樣的運動員不止一個

恥辱!香港運動員奪冠拒唱國歌,這樣的運動員不止一個

柳絮憶史
2025-06-14 07:10:03
伊朗15分鐘向以色列進行3次導彈齊射,哈梅內伊:絕不讓以政權全身而退!以軍否認F-35戰機被擊落

伊朗15分鐘向以色列進行3次導彈齊射,哈梅內伊:絕不讓以政權全身而退!以軍否認F-35戰機被擊落

每日經濟新聞
2025-06-14 13:47:08
羅帥宇冤不冤我說不準,但沒人會偷割你孩子的器官……

羅帥宇冤不冤我說不準,但沒人會偷割你孩子的器官……

基本常識
2025-06-14 22:42:03
局勢突變!中國深夜發出警告,俄羅斯聲明立即結束會談!

局勢突變!中國深夜發出警告,俄羅斯聲明立即結束會談!

一個有靈魂的作者
2025-06-14 22:17:44
中國專列,以最快速度駛進伊朗,伊朗總統也以最快速度訪問中國!

中國專列,以最快速度駛進伊朗,伊朗總統也以最快速度訪問中國!

大道無形我有型
2025-06-14 11:32:10
為什么母親節過得轟轟烈烈,父親節卻沉默無聲?網友的回答笑噴了

為什么母親節過得轟轟烈烈,父親節卻沉默無聲?網友的回答笑噴了

振華觀史
2025-06-14 12:36:28
一男子高聲怒罵館長是“臺獨”狗

一男子高聲怒罵館長是“臺獨”狗

代偉看世界
2025-06-15 01:13:56
印度網民們怒了!負責墜機飛機維修的是國企,曾讓全女工程師團隊更換787發動機

印度網民們怒了!負責墜機飛機維修的是國企,曾讓全女工程師團隊更換787發動機

不掉線電波
2025-06-14 21:25:56
李連杰宣布跟41歲兒子父親節重聚,久別30年攬實眼濕濕

李連杰宣布跟41歲兒子父親節重聚,久別30年攬實眼濕濕

快樂的小青瓦
2025-06-14 15:03:39
袁立小號發文緬懷羅帥宇,連發兩條動態,看新聞難過到吃不下飯

袁立小號發文緬懷羅帥宇,連發兩條動態,看新聞難過到吃不下飯

趣文說娛
2025-06-14 11:13:03
前田浩二:1-2的比分是無法接受的,對方很難打穿我們的防守

前田浩二:1-2的比分是無法接受的,對方很難打穿我們的防守

懂球帝
2025-06-15 00:34:43
浙江一婚席吃掉50萬元,結賬嫌太貴拒付款,餐具供應商:我的錢也沒給

浙江一婚席吃掉50萬元,結賬嫌太貴拒付款,餐具供應商:我的錢也沒給

極目新聞
2025-06-14 10:52:54
上海專家發現:吃甜食的老人,健康指數是吃蔬菜的人的5倍不止?

上海專家發現:吃甜食的老人,健康指數是吃蔬菜的人的5倍不止?

華庭講美食
2025-06-14 13:52:03
“多所高校禁用羅馬仕兩萬毫安充電寶”,羅馬仕發聲明道歉:任何經權威機構鑒定存在缺陷的產品將承擔全部責任,已展開核查

“多所高校禁用羅馬仕兩萬毫安充電寶”,羅馬仕發聲明道歉:任何經權威機構鑒定存在缺陷的產品將承擔全部責任,已展開核查

每日經濟新聞
2025-06-14 18:02:18
2025-06-15 07:47:00
CSDN incentive-icons
CSDN
成就一億技術人
25642文章數 242071關注度
往期回顧 全部

科技要聞

一輛新車比特斯拉FSD都便宜,全行業陪葬?

頭條要聞

伊朗數小時內或再襲擊 以色列進入"前所未有緊急狀態"

頭條要聞

伊朗數小時內或再襲擊 以色列進入"前所未有緊急狀態"

體育要聞

約戰天王山,步行者G4輸在了哪?

娛樂要聞

小S迎47歲生日,首個生日沒大S陪伴

財經要聞

樓市權威發聲

汽車要聞

長城為了拿環塔冠軍有多拼?魏建軍在下一盤大棋!

態度原創

手機
游戲
藝術
公開課
軍事航空

手機要聞

蘋果發布iOS 26測試版更新,iPhone XS已被列為“過時產品”

屏幕很能挨砸!Switch 2被錘子砸了50次后還能正常玩

藝術要聞

故宮珍藏的墨跡《十七帖》,比拓本更精良,這才是地道的魏晉寫法

公開課

李玫瑾:為什么性格比能力更重要?

軍事要聞

伊媒:以色列國防部大樓被伊朗導彈擊中

無障礙瀏覽 進入關懷版 主站蜘蛛池模板: 香蕉蕉亚亚洲aav综合| 性高朝久久久久久久3小时| 色狠狠av一区二区三区| 国产一卡2卡3卡四卡精品app| 中文字幕久精品免费视频| 国产精品视频一区国模私拍| 97人洗澡从澡人人爽人人模| 亚洲精品喷潮一区二区三区| 激情综合一区二区三区| 婷婷午夜天| 色哟哟精品网站在线观看| 亚洲一区二区三区四区五区六| 国产精品久久久久久52avav| 天天爽夜夜爽夜夜爽| 亚洲精品久久久久久久不卡四虎| 一本之道高清乱码久久久| 人妻丰满熟妇av无码区hd| 精品亚洲国产成人小电影| 无码av片在线观看免费| 最新在线精品国自产拍视频| 国产亚洲精品久久久久秋霞不卡| 国产av无码专区亚洲av琪琪| 国产片精品av在线观看夜色| 茄子视频国产在线观看| 久久久久亚洲av成人片| 精精国产xxxx视频在线播放| 黄a大片av永久免费| 欧美综合自拍亚洲综合图片区| 久久99精品国产99久久6尤物| 极品粉嫩嫩模大尺度无码视频| 免费国产乱理伦片在线观看| 亚洲图片综合图区20p| 两性色午夜视频免费播放| 精品日韩欧美一区二区在线播放| 特黄特色大片免费播放器图片| 天天躁夜夜躁狠狠眼泪| 午夜成人无码免费看试看| 人妻夜夜爽天天爽爽一区| 亚洲精品久久久www小说| 在线观看的av网站| 中文字幕制服丝袜人妻动态图|