【java】java8で追加された日付を扱うAPIを紹介!(Date and Time API)

従来のJavaでは日付/時刻を扱うためにDate/Calendar/DateFormt等のクラスを使用していました。

ですが、新しいJava8で追加された「Date and TimeAPI」は今までの、日付/時間のクラスより使いやすいんです。

また、ベンダー資格のJava silver試験の範囲にもなっていますので必ず押さえておきたいポイントでもあります。

 

まずDate and TimeAPIの特徴を解説します

f:id:koko55120:20210518231918j:plain

いままで、一般的な開発者が扱うような日付/時間のユースケースJava言語で十分にサポートされていないのでJava開発者にとって長年の悩みの種だったと言われています。
Date and TimeAPIはまさに、その悩みを改善するためにjava8から追加されたAPIと言えます。

 

特徴① 日時のみを扱うクラス/日付のみを扱うクラスなどまたは日付+時刻を扱うクラスなど仕様用途で使い分けることもできる
特徴② Immutable(不変)なオブジェクトである。


既存インスタンスの値を変更する際は新しくインスタンスを作成する必要があります。

 

日付を扱うLocalDate

以下のような日付形式を扱うにはLocalDateクラスを使用する。

2020-1-20

 

現在の時刻を取得する。

LocalDate date = LocalDate.now();

 

now()メソッドは現在の時刻を返します。

 

指定した年/月/日を渡しインスタンスを作成

LocalDate date = LocalDate.of(2020,02,20);

30年後の日付でオブジェクトを返してほしい場合

LocalDate date = LocalDate.of(2020,02,20);

//30年を足す
System.out.print(date.plusYears(30));

日時を扱うLocalTime

以下のような日付形式を扱うにはLocalTimeクラスが使えます。

15:57:04.142

現在の時刻を取得する

LocalTime time = LocalTime.of(15, 57,04,0);

3時間後の日付がほしいとき

LocalTime time = LocalTime.of(15, 57,04,0);

//Hoursは時
System.out.print(time.plusHours(3));

日付+時間を扱うLocalDateTime

LocalDateTimeは、以下のような日付時刻を扱います。

2020-02-28T16:01:12.659


現在の時刻と日付を取得する

LocalDateTime datetime = LocalDateTime.now();