关于SimpleDateFormat的一个小坑

关于SimpleDateFormat的一个小坑

SimpleDateFormat跨年度问题:
今天XX交易平台客户反馈落库的日期异常,本应该落库数据20191231-08:30:00.000,结果落库数据是20201231-08:30:00.000,在排除服务器系统时间正常后,视角落在了SimpleDateFormat 格式化上

先上代码:

关于SimpleDateFormat的一个小坑代码中通过YYYYMMdd-HH:mm:ss.sss 格式化日期时间,在我们平时使用的时候YYYY 和yyyy 貌似是一样的,通过翻阅API 文档后发现是有问题的,具体如下:下图是JDK1.8关于SimpleDateFormat日期格式的说明:
关于SimpleDateFormat的一个小坑赶紧写个列子程序看看:
关于SimpleDateFormat的一个小坑由上述例子程序可以看出一不小心就差了一年啊…总结:结合API 可知,y 表示Year,Y 则表示Week year;而Week year 到底啥意思API 并没有明确说明,结合例子程序及度娘可知:Week year意思是当天所在的周属于的年份,一周从周日开始周六结束,只要本周跨年,那么这周就算入下一年。20191231是周二刚好是2019年的最后一周并跨年,所以取到的是2020年。建议在用SimpleDateFormat进行日期格式化时,使用yyyy 进行处理,以防跨年这种特殊节点的产生。
下附2019/12日历:
关于SimpleDateFormat的一个小坑