本文內容基於 Oracle Java 官方文檔,經過個人實踐加以整理積累,僅供參考。 1 綜述
JDK 8 引入新的日期時間 APIs,由主包 java.time 和 4 個子包組成: java.time java.time.chrono java.time.format java.time.temporal java.time.zone
方法命名規範
| 首碼 |
方法類型 |
用途 |
| of |
static factory |
Creates an instance where the factory is primarily validating the input parameters, not converting them |
| from |
static factory |
Converts the input parameters to an instance of the target class, which may involve losing information from the input |
| parse |
static factory |
Parses the input string to produce an instance of the target class. |
|
|
|
|
|
|
2 課程
Java 中有 2 種時間呈現方式:
(1) 人類世界的時間,如年、月、日、小時、分鐘、秒
(2) 機器世界的時間,以一個時間軸為紀元,統計距離此紀元已消逝的納秒(十億分之一秒)值
JDK 8 新引入的日期時間 APIs 覆蓋了這兩種時間呈現方式,所以在選擇具體 API 之前需要確定時間的呈現方式,可以參考下表
| 類或枚舉 |
年 |
月 |
日 |
小時 |
分鐘 |
秒 |
地區偏差 |
地區ID |
字串輸出 |
| Instant |
|
|
|
|
|
Y |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2.1 DayOfWeek
(1) java.time.DayOfWeek 是枚舉類型,由 7 個常量組成,代表了一周七天
// 範例程式碼package test;import java.time.DayOfWeek;import org.junit.Test;public class DateTimeTest { @Test public void test() { System.out.println("DayOfWeek.MONDAY : " + DayOfWeek.MONDAY); System.out.println("DayOfWeek.TUESDAY : " + DayOfWeek.TUESDAY); System.out.println("DayOfWeek.WEDNESDAY : " + DayOfWeek.WEDNESDAY); System.out.println("DayOfWeek.THURSDAY : " + DayOfWeek.THURSDAY); System.out.println("DayOfWeek.FRIDAY : " + DayOfWeek.FRIDAY); System.out.println("DayOfWeek.SATURDAY : " + DayOfWeek.SATURDAY); System.out.println("DayOfWeek.SUNDAY : " + DayOfWeek.SUNDAY); }}// 測試結果DayOfWeek.MONDAY : MONDAYDayOfWeek.TUESDAY : TUESDAYDayOfWeek.WEDNESDAY : WEDNESDAYDayOfWeek.THURSDAY : THURSDAYDayOfWeek.FRIDAY : FRIDAYDayOfWeek.SATURDAY : SATURDAYDayOfWeek.SUNDAY : SUNDAY
(2) 整型值範圍[1,7],可以通過加減數字推算
(3) 使用 getDisplayName(TextStyle, Locale) 方法定製字串內容
// 範例程式碼