昨天在v站上看到這個關於yyyy-mm-dd的使用而出現bug的帖子(v2ex.com/t/633650)非常有意思,所以拿過來分享一下。
在任何程式語言中,對於時間、數字等資料上,都存在很多類似這種平時一切ok,特定時間、特定環境出問題的情況。出現這種問題的根本原因還是我們對於各種資料結構的細節定義在開始的時候都不太注意,都是從每一次使用問題出現之後才開始有了「刻骨銘心」的認識。
不論昨天你是否也經歷了這樣的bug,還是沒有經歷的讀者,希望看到這篇文章之後,對這個細節可以上點心,避免日後因為這個細節而犯錯。
下面就來一起看看這個問題的表現和原因吧:
yyyy
是week-based-year
,表示:當天所在的周屬於的年份,一周從週日開始,週六結束,只要本週跨年,那麼這周就算入下一年。所以2023年12月31日那天在這種表述方式下就已經 2020 年了。
而當使用yyyy
的時候,就還是 2019 年。
date 日期格式化 YYYY MM DD
date.prototype.format function format if y test format format format.replace regexp.1,this.getfullyear substr 4 regexp.1.length for var k in o if new ...
使用moment格式化日期
格式化日期 moment format yyyy mm dd hh mm ss 2014 09 24 23 36 09 今天是星期幾 moment format d 3 轉換當前時間的unix時間戳 moment format x 7天前的日期 moment subtract days 7 form...
格式化日期
格式化日期 輸出形式取決於使用者計算機的文化設定。using system using system.globalization public class mainclass string date for int i 0 i format.length i d 07 11 2004 輸出 d su...