671
技術社區[雲棲]
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。 |
Java 7 Date Time API
Java7有以下日期時間的類和方法。後麵我會在每一個類的各自的頁麵介紹他們。
System.currentTimeMillis() | 將從1970年1月1日到當前時間的總毫秒數返回的靜態方法。 |
java.util.Date | 表示日期和時間的類,其中大部分方法已被棄用。 |
java.sql.Date | 表示日期的類。去除了所有時間信息。該類由JDBC所使用。 |
java.sql.Timestamp | 表示日期和時間的類。該類由JDBC所使用。 |
java.util.Calendar | 一些Calendar類的基類,擁有著計算日期和時間的方法,比如在另一個日期上添加一天或者一個月。 |
java.util.GregorianCalendar | java.util.Calendar的一個具體子類,表示在當今西方普遍使用的公曆。擁有著來自於 java.util.Calendar所有計算日期和時間的方法。 |
java.util.TimeZone | Java 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 類。
這裏有一個Java date 和time 教程的列表,方便你快速導航(譯者注:目前還沒有翻譯完,會盡快補全):
- Java Date Time 教程
- Java Date Time 教程-System.currentTimeMillis()
- Java Date Time 教程-時間測量
- Java Date Time 教程-java.util.Date
- Java Date Time教程-Java.sql.Date
- Java Date Time 教程-java.sql.Timestamp
- Java Date Time 教程-java.util.Calendar和GregorianCalendar
- Java’s java.util.TimeZone
- Parsing and Formatting Dates in Java
- Java Instant
- Java Duration
- Java LocalDate
- Java LocalTime
- Java LocalDateTime
- Java ZonedDateTime
- Java DateTimeFormatter
(全文完)
最後更新:2017-05-22 15:33:02
上一篇:
《Java並發編程的藝術》第一章
下一篇:
單身狗慎入,程序員的情侶裝穿搭指南
andrpid優化之刪除無用資源
畢 業畢 業畢 業畢 業畢 業
SparseArray替代HashMap來提高性能
【白碩】當人工智能遇到區塊鏈,是驚鴻一瞥還是天長地久?
如何在 Linux 中將文件編碼轉換為 UTF-8
PC真的死了嗎?誰是最後的贏家?
解決The type or namespace name \'XXXX\' does not exist in the namespace \'XXXXXXXXX\' 的錯誤
Strategies for Effective Database Synchronization
crontab環境變量的問題
找bug記(2)