這麼來看Java Date Time其實很好理解

目錄

  • Java 8 Date Time API

  • Java 7 Date Time API

當你初次嘗試弄明白怎麼去使用Java的date time 的API的時候,那是相當令人困惑的。Therefore I have put together this little trail on Java’s date and time classes。希望這會讓你對Java’的date類和time類有個總體的認識。我也希望這能消除一些Sun所製造的關於Java中許多date和time類的困惑。
實際上,在Java8中,隨着一整套新的類的引入,舊有的date time API已經發生了改變(清除)。這個教程將會一起解釋Java8和Java7的date time API.

Java 8 Date Time API

在Java8中,加入了一個全新的date time API。這個API在Java8標準類庫中的java.time包。
Java8中date time API最主要的改變是日期和時間不再表示爲從1970年1月1日到現在爲止的總毫秒數,而是總秒數和總納秒數。總秒數可以是正的也可以是負的以及它由long類型來表示。總納秒數永遠是正的以及它由int類型來表示。你將會在新的Java date time API 的許多類中看到這種新的日期和時間表現形式。
Java.time 包中也包含了一套子類,這些子類包含了更多的實用工具等。舉個例子,java.time.chrono包中包含了一些處理日本、泰國、臺灣和伊斯蘭日曆的對象類。Java.time.format包中包含了用於轉換strings到dates和格式化 dates 到 strings。

Java8 中date time API核心由以下這些類組成:

Instant表示時間線上的一個瞬間。在Java7的date time API中,一個瞬間通常由從1970年1月1日到現在的總毫秒數來表示。在Java8中Instant類代表着時間線上的一個瞬間,這個瞬間由從1970年1月1日到現在的總秒數和總納秒數來表示。
Duration表示持續的時間,比如在兩個瞬間之間的時間。和Instant類一樣,Duration將這個時間表示爲總秒數和總納秒數。
LocalDate表示不帶時區信息的日期-比如生日日期、官方節日等。
LocalDateTime表示不帶時區信息的日期時間
LocalTime表示不帶時區信息的當地時間。
TemporalAdjuster
ZonedDateTime表示攜帶時區信息的日期時間
Period
DateTimeFormatter將date time對象格式化爲字符串。比如zonedDateTime或者LocalDateTime。

Java7有以下日期時間的類和方法。後面我會在每一個類的各自的頁面介紹他們。Java 7 Date Time API

System.currentTimeMillis()將從1970年1月1日到當前時間的總毫秒數返回的靜態方法。
java.util.Date表示日期和時間的類,其中大部分方法已被棄用。
java.sql.Date表示日期的類。去除了所有時間信息。該類由JDBC所使用。
java.sql.Timestamp表示日期和時間的類。該類由JDBC所使用。
java.util.Calendar一些Calendar類的基類,擁有着計算日期和時間的方法,比如在另一個日期上添加一天或者一個月。
java.util.GregorianCalendarjava.util.Calendar的一個具體子類,表示在當今西方普遍使用的公曆。擁有着來自於 java.util.Calendar所有計算日期和時間的方法。
java.util.TimeZoneJava TimeZone類表示時區,在跨時區的日曆計算很有用。
java.text.SimpleDateFormat該類可以幫助你轉換strings到dates和格式化 dates 到 strings。


那麼,哪些類是你應該使用的呢?這個取決於你將要做什麼。
如果你只是做一些簡單的時間設置,那麼System.currentTimeMillis()就足矣。
如果你只是需要一個能夠裝載日期的對象,比如作爲一個簡單的域模型對象的屬性,那麼你可以使用java.util.Date 類。
如果你只是需要讀取和寫入日期時間到數據庫,那麼使用java.sql.Date 類和java.sql.Timestamp類。
如果你只是需要做一些日期計算,比如在另一個日期添加一些天數或者月數、檢查給定的日期是一週中的第幾天(週一、週二等)、在時區之間轉換日期和時間,那麼使用java.util.Calendar類和java.util.GregorianCalendar 類。



發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章