jdk1.8 java.text.SimpleDateFormat:大小写问题
年底遇到的问题现象:
2018-12-30,31,两天,如果格式化时间使用YYYY-MM 大写的YYYY;格式化后的时间就变成了2019-12-30,31;大写表示周年:所以意思可能为每周以周日开始,周一结束,如果本周存在跨年,则本周第一天开始便为第二年的时间。所以年份表示应该使用小写yyyy
jdk1.8:
https://docs.oracle.com/javase/8/docs/api/
Letter | Date or Time Component | Presentation | Examples |
---|---|---|---|
G | Era designator | Text | AD;公元 |
y | Year | Year | 1996; 96 |
Y | Week year;周年:每周以周日开始,周一结束,如果本周存在跨年,则本周第一天开始便为第二年的时间 | Year | 2009; 09 |
M | Month in year (context sensitive) | Month | July; Jul; 07 |
L | Month in year (standalone form);测试结果跟MM一样,不知道应用场景是啥 | Month | July; Jul; 07 |
w | Week in year;本年第几周,ww表示位数表示 | Number | 27 |
W | Week in month;本月第几周,注意每周都是从周日开始;如果本月1号是周日,也会算作一周 | Number | 2 |
D | Day in year;表示一年的第几天 | Number | 189 |
d | Day in month | Number | 10 |
F | Day of week in month;跟W表示一样? | Number | 2 |
E | Day name in week | Text | Tuesday; Tue;星期六 |
u | Day number of week (1 = Monday, …, 7 = Sunday) | Number | 1 |
a | Am/pm marker | Text | PM;下午 |
H | Hour in day (0-23) | Number | 0 |
k | Hour in day (1-24);小时;下午两点14 | Number | 24 |
K | Hour in am/pm (0-11);区分上下午的小时;下午两点02 | Number | 0 |
h | Hour in am/pm (1-12);与K类似 | Number | 12 |
m | Minute in hour | Number | 30 |
s | Second in minute | Number | 55 |
S | Millisecond;毫秒 | Number | 978 |
z | Time zone 时区 | General time zone | Pacific Standard Time; PST; GMT-08:00;(CST:2018-12-29 14:20:01) |
Z | Time zone 时区 | RFC 822 time zone | -0800;(+0800:2018-12-29 14:20:01) |
X | Time zone | ISO 8601 time zone | -08; -0800; -08:00;(+0800:2018-12-29 14:20:01) |