Java庫中的LocalDate類

逝者如斯夫zeng發表於2022-01-15

Java庫中的LocalDate類

類庫設計者決定將儲存時間與給時間點命名分開。所以標準Java類庫分別包含了兩個類:一個用來表示時間點的Date類;另一個是用來表示大家熟悉的日曆表示法的LocalDate類。

將時間與日曆分開是一種很好的物件導向設計。通常,最好使用不同的類表示不同的概念。

不要使用構造器來構造LocalDate類的物件。實際上,應當使用靜態工廠方法代表你呼叫構造器。

下面表示式

LocalDate.now();

會構造一個新物件,表示構造這個物件時日期。

可以提供年、月和日來構造對應一個特定日期物件

LocalDate.of(1999,12,31);

當然,通常都希望將構造的物件儲存在一個物件變數中:

LocalDate newYearsEve = LocalDate.of(1999,12,31);

一旦有了一個LocalDate物件,可以用方法getYear、getMonthValue和getDayOfMonth得到年、月和日:

int year = newYearsEve.getYear();//2022
int month = newYearsEve.getMonthValue();//1
int day = newYearsEve.getDayOfMonth();//15

image-20220115164653406

看起來這個沒多大意義,因為這些正是構造物件時使用的那些值。不過有時可能某個日期是計算得到的,你希望呼叫這些方法來得到更多資訊。例如plusDays方法會得到一個新的LocalDate,如果把這個方法的物件,稱為當前物件,這個新日期物件則是距當前物件指定天數的一個新日期:

LocalDate aThousandDaysLater  = newYearsEve.plusDays(1000)
int year = aThousandDaysLater.getYear(); //2024
int month = aThousandDaysLater.getMonthValue();//10
int day = aThousandDaysLater.getDayOfMonth();//11

image-20220115165133024

LocalDate類封裝了例項域來維護所設定的日期。如果不檢視原始碼,就不可能知道類內部的日期表示。

參考書籍:
《java核心基礎·卷一:基礎知識(原版10)》

相關文章