Java 日期格式中的坑

原文来自 前几天你因为 YYYY-MM-dd 翻车了吗?

看完了来看看下面这段代码解释:

 /**
 说明:日期格式化时, 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)
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

友情链接更多精彩内容