年(Year)、月(Month)、日(Day)、时(Hour)、分(Minute)、秒(Second) 分别为时间基本单位。在Java和Oracle中的时间格式化转换语法中分别用其首字母代表对应的单位。
例如:
yyyy-MM-dd 表示 : 年-月-日
yyyy-MM-dd HH:mm:ss 表示 : 年-月-日 时:分:秒
一、两个首字母与单个首字母(XX与X的)的区别
在通常情况下M、D、H、m、s都是成对出现的(MM,dd,HH,mm,ss)
但是有时也会看到它们单独存在(M,d,H,m,s)
它们的区别为是否有前导零:M,d,H,m,s表示非零开始,MM,dd,HH,mm,ss表示从零开始。
如下2019年2月9日凌晨1点02分05秒在Java中不同的时间格式下的不同结果:
yyyy-M-d H:m:s ---------------- 2019-2-9 1:2:5
yyyy-MM-dd HH:mm:ss ---------------- 2019-02-09 01:02:05
二、大写H与小写h的区别(24小时制和12小时制的)
在Java中大写的 “HH” 表示 24 小时制时间格式,小写的 “hh” 表示12小时制的时间格式。
又因为在SQL中不区分大小写的缘故 ,“HH24” 或 “hh24” 表示 24 小时制时间格式,“HH” 或 “hh” 默认为 12 小时制时间格式。
三、大写M与小写m的区别
因为月(Month)和 分(Minute)首字母一样的缘故,在Java中用 大写的 “M”表示月,用小写的“m”表示分钟。
又因为在SQL中不区分大小写的缘故、“MM” 或 “mm” 表示月,“MI” 或 “mi” 表示分钟。
四、大写YYYY与小写yyyy的区别
官方解释:
“YYYY format” 是 “ISO week numbering system”
“yyyy format” 是 “Gregorian
Calendar” “YYYY specifies the week of the year (ISO) while yyyy
specifies the calendar year (Gregorian)"
意思就是yyyy为Year,YYYY为 Week Year。
总之,正常情况下如果希望按照日历格式得到每天的日期字符的话,使用 “yyyy”。