在Java應用程序中,我們經常需要處理時間和日期,例如,生成一個日期時間戳、格式化日期字符串或者解析日期字符串。Java的日期和時間計算非常完備,而且提供了眾多的類和方法來處理時間和日期,其中包括Date和SimpleDateFormat兩個主要的類。
一、Date類
在Java中,Date是一個封裝了時間戳的類,我們可以使用它來獲取系統當前時間的時間戳或者設置指定時間的時間戳。Date類中定義了一些常用的方法如下:
//獲取系統當前時間的時間戳 Date date = new Date(); long timestamp = date.getTime(); //獲取指定時間的時間戳 Date date2 = new Date(2021, 6, 2); long timestamp2 = date2.getTime();
這裡需要注意的是,Date類的構造函數已經過時,推薦使用Calendar類來代替,這裡只是為了演示使用。
二、SimpleDateFormat類
SimpleDateFormat類是一個用來格式化時間的類,可以讓我們把時間戳轉換為指定格式的字符串,也可以把字符串轉換為對應的時間戳。
下面是一個將時間戳格式化為日期字符串的示例:
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); Date date = new Date(); String dateStr = sdf.format(date);
這裡,我們使用了SimpleDateFormat的format()方法將Date對象的時間戳按照指定的格式轉換成字符串。在格式化字符串時,我們可以使用以下格式化字符串:
- y:年
- M:月份
- d:日期
- H:小時(24小時格式)
- h:小時(12小時格式)
- m:分鐘
- s:秒
- S:毫秒
除了格式化時間戳之外,SimpleDateFormat還支持把字符串轉換為對應的Date類型。可以使用SimpleDateFormat的parse()方法將一個字符串解析成Date對象,如下所示:
SimpleDateFormat sdf2 = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); String dateStr = "2021-06-02 12:15:30"; Date date = sdf2.parse(dateStr);
三、DateTimeFormatter類(Java8+)
在Java 8之後,我們可以使用DateTimeFormatter類進行時間日期格式化。與SimpleDateFormat不同,DateTimeFormatter採用線程安全的方式進行處理,使用起來更加方便,而且提供了更多的格式化選項。
下面是一個將時間戳格式化為日期字符串的示例:
DateTimeFormatter dtf = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss"); LocalDateTime ldt = LocalDateTime.ofInstant(Instant.now(), ZoneId.systemDefault()); String dateStr = dtf.format(ldt);
在格式化字符串時,我們可以使用以下格式化字符串:
- G:AD/BC(英文)
- y:年
- M:月份
- d:日期
- H:小時(24小時格式)
- h:小時(12小時格式)
- m:分鐘
- s:秒
- S:毫秒
- a:AM/PM
- E:星期(英文)
- c:星期(數字)
- n:月份(數字)
- L:月份(英文)
- z:時區
與SimpleDateFormat類似,DateTimeFormatter也支持將字符串解析成對應的時間日期對象。可以使用DateTimeFormatter的parse()方法將一個字符串解析成LocalDateTime對象,如下所示:
DateTimeFormatter dtf2 = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss"); String dateStr = "2021-06-02 12:15:30"; LocalDateTime ldt = LocalDateTime.parse(dateStr, dtf2);
四、總結
在Java中,我們可以使用Date類和SimpleDateFormat類來處理時間和日期,對於Java 8以上的版本,我們還可以使用DateTimeFormatter類來處理。
以上是本篇文章的全部內容,希望可以幫助到你。如果你還有任何問題,歡迎在評論區留言。
原創文章,作者:小藍,如若轉載,請註明出處:https://www.506064.com/zh-hant/n/300837.html