Java開發經常要把當前時間轉為字串,比如“2020-07-08 22:59:48”這樣,此時會用到格式化工具SimpleDateFormat,該工具通過下列字符表示不同的時間單位:
小寫的yyyy:表示四位年份數字,如1949、2017等等,
大寫的MM:表示兩位月份數字,如01表示一月份,12表示12月份,
小寫的dd:表示兩位日期數字,如08表示當月八號,26表示當月二十六號,
大寫的HH:表示24小時制的兩位小時數字,如19表示晚上七點,
小寫的mm:表示兩位分鐘數字,如30表示某個點鐘的三十分,
小寫的ss:表示兩位秒鐘數字,
按照“2020-07-08 22:59:48”這種字串樣式,對應的日期格式為“yyyy-MM-dd HH:mm:ss”,于是將日期時間轉為字串的代碼如下所示:
// 獲取當前的日期時間字串
public static String getNowDateTime() {
// 創建一個日期格式化的工具
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
// 將當前日期時間按照指定格式輸出格式化后的日期時間字串
return sdf.format(new Date());
}
注意到上述的時間標記有區分大小寫,意味著大寫字母與小寫字母表達的時間是不一樣的,例如,大寫的MM表示兩位月份,而小寫的mm表示兩位分鐘,除此之外,還有以下不怎么常見的時間標記:
大寫的YYYY:同樣表示四位年份數字,但它并非指定日期所處的年份,而是指定日期所在周的最后一天(星期六)位于哪個年份,
大寫的D:表示從當年的1月1日開始算的第幾天,
小寫的hh:表示12小時制的兩位小時數字,如06可同時表示早上六點與傍晚六點,
大寫的SSS:表示三位毫秒數字,
以上四種時間標記,特別注意大寫的YYYY,因為其他標記不管怎樣都是取指定日期的某種單位,可是YYYY居然沒從指定日期取數,而是先找到那個日期所處的星期,找到那個星期的最后一天,再瞧瞧最后一天在哪個年份,關鍵每星期的最后一天究竟是星期幾呢?按照中國人的習慣,每周最后一天是星期日,然而在西方人看來,每周最后一天卻是星期六,所以YYYY要找的正是那個星期的星期六呀,
話雖如此,還得實地驗證一下才行,先看2004年12月31日,當天是星期五,那周的星期六是2005年1月1日,星期日是2005年1月2日,由于不管星期六還是星期日都落在2005年,因此那周的YYYY理應回傳2005年,于是撰寫下面的年份標記驗證代碼:
try {
SimpleDateFormat sdf1 = new SimpleDateFormat("yyyy-MM-dd");
Date date = sdf1.parse("2004-12-29"); // 2004-12-31是星期五,2005-01-01是星期六
SimpleDateFormat sdf2 = new SimpleDateFormat("YYYY-MM-dd");
String str = sdf2.format(date);
System.out.println("str="+str);
} catch (ParseException e) {
e.printStackTrace();
}
運行上面代碼,看到如下所示的輸出日志,果然2004年底的YYYY變成了2005,
str=2005-12-29
再看2005年12月31日,當天是星期六,那周的星期日是2006年1月1日,由于那周的星期六落在2005年,而星期日落在2006年,因此那周的YYYY應當回傳2005年(如果每周最后一天是星期六的話),此時年份標記驗證代碼示例如下:
try {
SimpleDateFormat sdf1 = new SimpleDateFormat("yyyy-MM-dd");
Date date = sdf1.parse("2005-12-29"); // 2005-12-31是星期六,2006-01-01是星期日
SimpleDateFormat sdf2 = new SimpleDateFormat("YYYY-MM-dd");
String str = sdf2.format(date);
System.out.println("str="+str);
} catch (ParseException e) {
e.printStackTrace();
}
運行上面代碼,看到如下所示的輸出日志,發現2005年底的YYYY仍為2005,從而證明了這個結論:在Java編程當中,星期六才是每周的最后一天,
str=2005-12-29
更多Java技術文章參見《Java開發筆記(序)章節目錄》
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/147645.html
標籤:Java
上一篇:Java中關于Token的理解
下一篇:Java集合-Map
