JAVA中的SimpleDateFormat yyyy和YYYY的區別


最近有一個功能是對輸入的日期格式化,設計給出的范例是 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


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM