多少人栽在 yyyy-MM-dd 上面了?
Posted 亦枫Blog
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了多少人栽在 yyyy-MM-dd 上面了?相关的知识,希望对你有一定的参考价值。
SimpleDateFormat 类用在 Java 编程中处理日期格式化,这是一个非常常见的使用场景。比如处理年月日时分秒的 Pattern 为:
yyyy-MM-dd HH:mm:ss
这里有一个问题,都是字母,为什么有的需要大写,有的需要小写呢?我们就拿年的字母 yyyy 与 YYYY 比较一下。
SimpleDateFormat sdf1 = new SimpleDateFormat("yyyy-MM-dd");
SimpleDateFormat sdf2 = new SimpleDateFormat("YYYY-MM-dd");
Calendar calendar = Calendar.getInstance();
calendar.set(2019, Calendar.DECEMBER, 28);
System.out.println(sdf1.format(calendar.getTime()));
System.out.println(sdf2.format(calendar.getTime()));
运行结果如下:
2019-12-28
2019-12-28
结果一样,好像也没有区别;换个日期再试一下,把天数 28 改为 29 再试一遍,运行结果如下:
2019-12-29
2020-12-29
同一个 calendar 对象,yyyy 与 YYYY 格式化的结果竟然相差一年!
这是因为小写的 yyyy 表示的是传统意义上的年份,而大写的 YYYY 表示基于 ISO 8601 标准、按周定义的年份,完全不是一个概念。
关于 YYYY 格式,Java 文档是这么解释的:
Java's DateTimeFormatter pattern "YYYY" gives you the week-based-year, (by default, ISO-8601 standard) the year of the Thursday of that week.
我们可以在 Oracle 的 Java 官方文档上找到 Date and Time Patterns 不同字母大小写分别代表的含义:
因此,大家在平时的开发过程中,有使用 SimpleDateFormat 格式化时间日期数据的地方,一定要小心了。
推荐阅读:如何像 IDE 一样浏览 GitHub 网站的项目?
又发现一个挣零花钱的方式ADB: unknown command ?简直是搜索引擎界的新起之秀,你值得拥有!
长按识别二维码,关注我,一名爱叨叨的程序员
以上是关于多少人栽在 yyyy-MM-dd 上面了?的主要内容,如果未能解决你的问题,请参考以下文章
据说有人面试栽在了Thread类的stop()方法和interrupt()方法上
jackson 转换 yyyy-MM-dd格式 少了一个小时问题解决(仅限中国)