关于日期格式你必须知道的坑( yyyy-MM-dd HH:mm:ss SSS)

参考了各位大神的文章,这里忘了引入链接...... 同时可参考 System.currentTimeMillis()与new Date()


凑一波热度,2019年最后两天日期显示为2020-12-31 06:07:59

常用格式为:yyyy-MM-dd HH:mm:ss
以 2019-12-31 06:07:59:666 时间为例: 

Letter 含义 Example
y yyyy------>2019
M MM------->12 大写的M
d 一月中的天数 dd--------->31
H 小时(0-23) HH--------->18   24 小时制的是大写的H
h 小时(1-12) hh---------->06  24 小时制的是大写的h
m mm-------->07 小写的m
s ss-------->59
S 毫秒 SSS--------->666
Y Week Year YYYY---->2020
D 一年中天数 DD-------->365

 而yyyy-MM-dd与YYYY-MM-dd区别在哪里?
Y 代表 Week Year,表示当天周所在的年份。这种方式将会把一年划分成52 周/53周(类似于闰年的概念,每隔几年将会增加一周)。Week Year下每周仅属于某一年,如果某年的第一周或最后一周跨年,就会导致部分日期年份与实际不符。

 Week Year 存在两种标准:
ISO 8601:国际标准,每周从周一开始,每年的第一周至少包含 4 天
Common:通用标准,每周从周日开始,每年的第一周至少包含 1 天

使用 ISO 8601 标准,分别看一下最后一周跨年以及第一周跨年的例子。
2015 年最后一周跨年,2016 前三天(与2015年12月的前四天默认是一周,是2015的周)使用 YYYY 最后结果为 2015,时间看起来被回退了。
2020 年第一周跨年,2019 年最后两天(不足4天,所以默认为下周,下周为2020年的周)使用 YYYY 结果为 2020。
关于日期格式你必须知道的坑( yyyy-MM-dd HH:mm:ss SSS)_第1张图片    关于日期格式你必须知道的坑( yyyy-MM-dd HH:mm:ss SSS)_第2张图片  


总结:

java中的的日期格式为:

yyyy-MM-dd HH:mm:ss:代表将时间转换为24小时制,例: 2020-01-07 13:21:55
yyyy-MM-dd hh:mm:ss: 代表将时间转换为12小时制,例: 2020-01-07  03:24:21

oracle中的日期格式为(不区分大小写):

yyyy-MM-dd HH24:mi:ss:代表oracle中的24小时制,例:2020/1/7 13:21:55
yyyy-MM-dd HH:mi:ss:    代表oracle中的12小时制,例:2020/1/7 9:21:55

之所以 oracle和java不同,是因为我们知道oracle是不区分大小写的,所以java中根据大小写来代表24小时和12小时的表达式在oracle中就会出问题,oracle中将24小时的时和分做了特殊处理.如上所示,在hh后面加上了24,将mm改为了mi.

 

 

你可能感兴趣的:(实践的那些事,JAVA基础)