字母 | 日期或时间元素 | 表示 | 示例 |
---|---|---|---|
G | Era | 标志符 | Text |
Y | 年 | Year | 1998 |
y | 年 | Year | 1998 |
M | 年中的月份 Month | May | 05 |
w | 年中的周数 | Number | 08 |
W | 月份中的周数 | Number | 3 |
D | 年中的天数 | Number | 189 |
d | 月份中的天数 | Number | 10 |
F | 月份中的星期 | Number | 2 |
E | 星期中的天数 | Text | Tuesday Tue |
a | Am/pm 标记 | Text | PM |
H | 一天中的小时数(0-23) | Number | 0 |
k | 一天中的小时数(1-24) | Number | 24 |
K | am/pm 中的小时数(0-11) | Number | 0 |
h | am/pm 中的小时数(1-12) | Number | 12 |
m | 小时中的分钟数 | Number | 30 |
s | 分钟中的秒数 | Number | 55 |
S | 毫秒数 | Number | 978 |
z | 时区 | General time zone | Pacific Standard Time; PST; GMT-08 00 |
Z | 时区 | RFC 822 time zone | -0800 |
某些时间格式字母数量对结果的影响
用日期举例:当获取到的日期字符串长度大于等于字母的数量时,输出正常的日期;当获取的日期字符串小于字母长度时,差多少就会在前面补充0。
月份字母是特例,当M的数量大于2,输出的结果是汉字月份,如八月、十一月
年份字母是特例,当Y/y的数量为2,输出的结果是年份的缩写,即后两位
关于月份想输出英文缩写的问题
SimpleDateFormat是一个以与语言环境有关的方式来格式化和解析日期的具体类。
想要输出英文的月份,需要指定SimpleDateFormat的语言为英文,并且使用MMM:
new SimpleDateFormat("MMM d", Locale.ENGLISH)
Java时间格式化时YYYY(大写)和yyyy(小写)的区别
在Java中,我们大多数情况下格式日期都是用的SimpleDateFormat,比如说把一个日期格式成"yyyy-MM-dd"的形式。我们要注意的是,对于年份来说,大写的Y和小写的y其意义是不同的。
y 是Year, Y 表示的是Week year
Week year的意思是,当天所在的周属于的年份,一周从周日开始,周六结束,只要本周跨年,那么这周就算入下一年。
常用的时间格式
1.精确到年月日: yyyy-MM-dd、yyyyMMdd、yyyy年MM月dd日
2.精确到时分秒的完整时间: yyyy-MM-dd HH:mm:ss、yyyyMMddHHmmss、yyyy年MM月dd日 HH时mm分ss秒
3.精确到毫秒完整时间: yyyy-MM-dd HH:mm:ss.SSS、yyyyMMddHHmmssSSS、yyyy年MM月dd日 HH时mm分ss秒SSS毫秒