最近有一個功能是對輸入的日期格式化,設計給出的范例是 YYYY-MM-dd HH:mm:ss,於是我簡單驗證了一下是可以的,然后就這么在手冊里寫了。然后偶然發現有地方也用yyyy啊,這個到底有神馬區別啊,還是隨便用呢。看了下jdk,這么說的:
也就是說Y表示的是Week year,可是,這個Week year又是什么。。jdk文檔貼心地給出了Examples,然而並沒有什么卵用。。
經過試驗,得出的結果如下:Week year意思是當天所在的周屬於的年份,一周從周日開始,周六結束,只要本周跨年,那么這周就算入下一年,例如2010.12.26,日歷長成這樣:
12.26所在的周的最后一天是2011.1.1,這天屬於2011,所以2010.12.26的Week year就是2011,用YYYY做格式化,就會得到2011.12.26。
試驗代碼:
public static void main(String[] args) {
Calendar calendar = Calendar.getInstance();
// 2014-12-26
calendar.set(2010, Calendar.DECEMBER, 26);
Date strDate1 = calendar.getTime();
SimpleDateFormat f1 = new SimpleDateFormat("YYYY-MM-dd");
System.out.println("Result for YYYY: " + f1.format(strDate1));
SimpleDateFormat f2 = new SimpleDateFormat("yyyy-MM-dd");
System.out.println("Result for yyyy: " + f2.format(strDate1));
}
運行結果:
Result for YYYY: 2011-12-26
Result for yyyy: 2010-12-26
這個結果是在jdk的1.7版本的試驗結果,其余版本什么結果不清楚。
java version "1.7.0_75"
Java(TM) SE Runtime Environment (build 1.7.0_75-b13)
Java HotSpot(TM) 64-Bit Server VM (build 24.75-b04, mixed mode)
有些文章說本周的周四屬於那一年,本周就是哪一年的,但是試出來不是這樣的啊,2010.12.26的周四就在2010年,然而得出的結果仍然算是2011年的,所以我只好認為原則是只要跨年就屬於下一年。。
總之,僅僅是想格式化我們普通人認識的日期,用"yyyy-MM-dd HH:mm:ss" 就夠了。YYYY什么的,沒事就不要用了啊。
————————————————
版權聲明:本文為CSDN博主「加班加班到天明」的原創文章,遵循 CC 4.0 BY-SA 版權協議,轉載請附上原文出處鏈接及本聲明。
原文鏈接:https://blog.csdn.net/bewilderment/article/details/48391717