zoukankan      html  css  js  c++  java
  • 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

  • 相关阅读:
    机器学习 —— 概率图模型(学习:最大似然估计)
    机器学习 —— 概率图模型(学习:综述)
    机器学习 —— 概率图模型(推理:决策)
    机器学习 —— 概率图模型(推理:连续时间模型)
    我的c++学习(3)字符的输入输出
    法国人的浪漫精神从在于他们的灵魂之中(转)
    我的c++学习(2)比较两个数字大小
    我的c++学习(1)hello world!
    获取datable中某行某列的数据
    学习资源asp.net
  • 原文地址:https://www.cnblogs.com/tiancai/p/12146088.html
Copyright © 2011-2022 走看看