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 |