1、YYYY和yyyy的區別
首先先看看我的本地系統時間
測試這大寫YYYY和小寫yyyy的區別
public static void main(String[] args) {
String time1 = new SimpleDateFormat(" yyyy-MM-dd HH_mm_ss").format(new Date());
String time2 = new SimpleDateFormat(" YYYY-MM-dd HH_mm_ss").format(new Date());
System.out.println(time1);
System.out.println(time2);
}
2019-12-30 10_16_03
2020-12-30 10_16_03
*解析:YYYY在Java中指的是Week year 就是說這週中有沒有跨年的日期(週日開始-週六結束爲一週),例如上圖中當前所 在的周爲 12.29-01.4爲一週 這周跨年所以YYYY年就指向下一年 2020
**警告 warning
Data轉String的時候上述規則符合,但是String轉Date時,上述規則不符合
public static void main(String[] args) {
// 獲得2019-12-30的Date對象
SimpleDateFormat dateFormat1 = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
Date myDate1 = null;
try {
myDate1 = dateFormat1.parse("2019-12-30 22:36:01");
} catch (ParseException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
System.out.println(myDate1);
// 獲得2019-12-30 的Date對象
SimpleDateFormat dateFormat2 = new SimpleDateFormat("YYYY-MM-dd HH:mm:ss");
Date myDate2 = null;
try {
myDate2 = dateFormat2.parse("2019-12-30 22:36:01");
} catch (ParseException e1) {
// TODO Auto-generated catch block
e1.printStackTrace();
}
System.out.println(myDate2);
}
Mon Dec 30 22:36:01 GMT+08:00 2019
Sun Dec 30 22:36:01 GMT+08:00 2018
所以 date->String 時候如果當前日期所在的周跨年則YYYY表示下一年;
String->Date 時候YYYY不符合上述規則
2、DD和dd的區別
public static void main(String[] args) {
String time1 = new SimpleDateFormat(" yyyy-MM-dd HH_mm_ss").format(new Date());
String time2 = new SimpleDateFormat(" yyyy-MM-DD HH_mm_ss").format(new Date());
System.out.println(time1);
System.out.println(time2);
}
2019-12-30 10_27_33
2019-12-364 10_27_33
*解析:DD在Java中指的是當前日期在本年中的第幾天,12月30日爲2019年中的第364天所以打印出來爲364
3、MM和mm的區別
MM是指月份 mm指的是分,給小夥伴們做一個測試
public static void main(String[] args) {
String time1 = new SimpleDateFormat(" yyyy-MM-dd HH_mm_ss").format(new Date());
String time2 = new SimpleDateFormat(" yyyy-mm-dd HH_mm_ss").format(new Date());
System.out.println(time1);
System.out.println(time2);
}
2019-12-30 10_33_32
2019-33-30 10_33_32
可以使用 但是個人感覺沒有意義
4、HH和hh的區別
HH表示的是24小時制,hh表示的是12小時制
5、SS和ss的區別
public static void main(String[] args) {
String time1 = new SimpleDateFormat(" yyyy-MM-dd HH_mm_ss_SSS").format(new Date());
String time2 = new SimpleDateFormat(" yyyy-MM-dd hh_mm_ss_SSS").format(new Date());
System.out.println(time1);
System.out.println(time2);
}
2019-12-30 10_54_33_541
2019-12-30 10_54_33_542
**解析:SSS表示的是毫秒 ss表示的是秒
6、其他
w 年中的週數 Number 27
W 月份中的週數 Number 2
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
z 時區 General time zone Pacific Standard Time; PST; GMT-08:00
Z 時區 RFC 822 time zone -0800