涉及到日期的跨年事故

 1 public static void main(String[] args) {
 2     Calendar calendar = Calendar.getInstance();
 3     // 2019-12-31
 4     calendar.set(2019, Calendar.DECEMBER, 31);
 5     Date strDate1 = calendar.getTime();
 6     // 2020-01-01
 7     calendar.set(2020, Calendar.JANUARY, 1);
 8     Date strDate2 = calendar.getTime();
 9     SimpleDateFormat formatYYYY = new SimpleDateFormat("YYYY/MM/dd");
10     System.out.println("2019-12-31 转 YYYY/MM/dd 格式: " + formatYYYY.format(strDate1));
11     System.out.println("2020-01-01 转 YYYY/MM/dd 格式: " + formatYYYY.format(strDate2));
12 }

年份由YYYY-->yyyy

jDK6的SimpleDateFormat只有小“y”,没有大“Y”。JDK7开始引入了大“Y”,表示Week year。
Week year意思是当天所在的周属于的年份,一周从周日开始,周六结束,只要本周跨年,那么这周就算入下一年。例如2017年12月31日,本周(2017年12月31日-2018年1月6日)本周跨年了。就进入了下一年。

1  SimpleDateFormat formatYYYY = new SimpleDateFormat("yyyy/MM/dd");
2         System.out.println("2019-12-31 转 yyyy/MM/dd 格式: " + formatYYYY.format(strDate1));
3         System.out.println("2020-01-01 转 yyyy/MM/dd 格式: " + formatYYYY.format(strDate2));

 

  日期 dd-->DD

1 SimpleDateFormat formatYYYY = new SimpleDateFormat("yyyy/MM/DD");
2         System.out.println("2019-12-31 转 yyyy/MM/DD 格式: " + formatYYYY.format(strDate1));
3         System.out.println("2020-01-01 转 yyyy/MM/DD 格式: " + formatYYYY.format(strDate2));

常用日期结构:
yyyy-MM-dd HH:mm:ss.SSS
yyyy-MM-dd HH:mm:ss
yyyy-MM-dd
MM dd yyyy
日期和时间模式
字母 日期或时间元素 表示 实例
G 年代标志符 Text AD
y Year 1996:96
Y Year 2009;09
M Month July;Jul;07
L 年月(独立形式) Month July;Jul;07
w 一年中第几个星期 Number 27
W 一月中第几个星期 Number 2
D 一年中的第几天 Number 189
d 一月中的第几天 Number 10
F 一月中第几个星期 Number 03
E 星期数(星期一.......星期日) Text 星期日
u 星期数(1 =星期一,7,星期日) Number 7
a 上午 / 下午 标记符 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 时区   CST
Z 时区   =0800
X 时区   +08
原文地址:https://www.cnblogs.com/itworkerlittlewrite/p/12190352.html