看完了来看看下面这段代码解释:
/**
说明:日期格式化时, yyyy 表示当天所在的年,而大写的 YYYY 代表是 week in which year,意思是当天所在的周属于的年份,
一周从周日开始,周六结束,只要本周跨年,返回的 YYYY 就是下一年。
另外需要注意:
表示月份是大写的 M
表示分钟则是小写的 m
24 小时制的是大写的 H
12 小时制的则是小写的 h
*/
DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss");
String timeStr = "2019-01-01 00:00:00";
LocalDateTime dateTime = LocalDateTime.parse(timeStr, formatter);
System.out.println(dateTime + "\n" + dateTime.toLocalDate() + "\n" + dateTime.toLocalTime());
输出
2019-01-01T00:00
2019-01-01
00:00
也就是说:年份如果用 Y 会是这周的年份,y 才是标准的年份。这一点官方文档没说明,所以还是自己注意点吧,以后转换日期格式的时候记得还是用 “yyyy-MM-dd” 这种格式吧,避免出现这种情况衍生的 bug。
规范的日期格式:
- 距离现在时间跨年,显示格式:
中文:yyyy/mm/dd (2020年06月01日)
英文:mm dd,yyyy (Jun 1,2020)