JAVA日期格式的各种坑

java的日期格式是我们在开发中Very常用,几乎到了离不开的程度。但是Javad的日期格式也为我们留下了各种坑。

坑一:YYYY和yyyy

我们开发人员平时写年月日的时候 总不清楚YYYY和yyyy的区别,经常混用。:

有这个问题,比如2019年12月31日

JAVA日期格式的各种坑

打印结果是:

JAVA日期格式的各种坑

2019-12-31的YYYY-MM-dd格式化Date后居然是2018年的12月30日?

这个暂且不论,看下一段代码,此代码借鉴了一段,稍作修改。

JAVA日期格式的各种坑

结果呢:

JAVA日期格式的各种坑

你是否心中有很多❓

JAVA日期格式的各种坑

1、"YYYY format" 是 "ISO week numbering system" 是按照周来计算时间,今天是12月29号周天,是2020年的第一周所以年份开始就是进入了2020年了

2、"yyyy format" 是 “Gregorian Calendar” 是按天数作为一年的计算单位

坑二:DD和dd

JAVA日期格式的各种坑

这个打印出来的是什么, 预期打印的应该是2020-03-01吧

结果呢?

JAVA日期格式的各种坑

大跌眼镜啊! 原来DD是在本年中的第几天。。。。。

其他不算坑的:

JAVA日期格式的各种坑

结果为

JAVA日期格式的各种坑 HH是24小时制,hh是12小时制。

小技巧:如何精确到微秒:

SimpleDateFormat formatter = new SimpleDateFormat("mm分ss.ss秒");   
String  formatDate = formatter.format(new Date());
比如:
mm分ss.ss秒 10分49.04秒
mm分ss.sss秒 10分49.049秒

最后贴一段JAVA8官方的介绍

JAVA日期格式的各种坑