SimpleDateFormat 类用在 Java 编程中处理日期格式化,这是一个非常常见的使用场景。比如处理年月日时分秒的 Pattern 为:
yyyy-MM-dd HH:mm:ss
这里有一个问题,都是字母,为什么有的需要大写,有的需要小写呢?我们就拿年的字母 yyyy 与 YYYY 比较一下。
|
|
运行结果如下:
|
|
结果一样,好像也没有区别;换个日期再试一下,把天数 28 改为 29 再试一遍,运行结果如下:
|
|
同一个 calendar 对象,yyyy 与 YYYY 格式化的结果竟然相差一年!
这是因为小写的 yyyy 表示的是传统意义上的年份,而大写的 YYYY 表示基于 ISO 8601 标准、按周定义的年份,完全不是一个概念。
关于 YYYY 格式,Java 文档是这么解释的:
|
|
我们可以在 Oracle 的 Java 官方文档上找到 Date and Time Patterns 不同字母大小写分别代表的含义:
https://docs.oracle.com/javase/8/docs/api/java/text/SimpleDateFormat.html
因此,大家在平时的开发过程中,有使用 SimpleDateFormat 格式化时间日期数据的地方,一定要小心了。