従来のJavaでは日付/時刻を扱うためにDate/Calendar/DateFormt等のクラスを使用していました。
ですが、新しいJava8で追加された「Date and TimeAPI」は今までの、日付/時間のクラスより使いやすいんです。
また、ベンダー資格のJava silver試験の範囲にもなっていますので必ず押さえておきたいポイントでもあります。
まずDate and TimeAPIの特徴を解説します
いままで、一般的な開発者が扱うような日付/時間のユースケースが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();