Java/日時操作/LocalDateクラス

Java/日時操作/LocalDateクラス

Java8から登場の日付専用の管理クラス。Immutable。 これを積極的に使っていきたい。

完全に日付操作専用の決定版クラスで、このクラスの周辺には Date や Calendar など一切出てこない。 もうそれらは黒歴史として扱われるようだ。

今日日付で作る

LocalDate クラスは日付までしか管理しない(なので時刻が無い)。 これで今日の日付でインスタンスを作る

LocalDate d = LocalDate.now();
System.out.println(d);  //=> 2017-08-17

該当日付の週の始まりの日付を指定する

週の始まりが月曜日だとすると

LocalDate d = LocalDate.now();
LocalDate start = d.minusDays(d.getDayOfWeek().getValue() + DayOfWeek.MONDAY.getValue())
System.out.println(d);

火曜日ならば

LocalDate d = LocalDate.now();
LocalDate start = d.minusDays(d.getDayOfWeek().getValue() + DayOfWeek.MONDAY.getValue())
System.out.println(d);

曜日を得る

LocalDate クラス系では曜日は DayOfWeek Enum に定義されていて、LocalDate からはその値を得ることができる。

LocalDate d1 = LocalDate.now();
System.out.println(d1.getDayOfWeek());  //=> この値は DayOfWeek.WEDNESDAY

いつもながらの数値で取りたい場合はこうなる

System.out.println(d1.getDayOfWeek().getValue()); 

この Enumの値は各こうなっている

System.out.println(DayOfWeek.SUNDAY.getValue());    //=> 7
System.out.println(DayOfWeek.MONDAY.getValue());    //=> 1
System.out.println(DayOfWeek.TUESDAY.getValue());   //=> 2
System.out.println(DayOfWeek.WEDNESDAY.getValue()); //=> 3
System.out.println(DayOfWeek.THURSDAY.getValue());  //=> 4
System.out.println(DayOfWeek.FRIDAY.getValue());    //=> 5
System.out.println(DayOfWeek.SATURDAY.getValue());  //=> 6

月曜1始まりである。

日付計算

昨日の日付を得る(日付を日にちで減算する)

LocalDate d1 = LocalDate.now();
LocalDate d2 = d1.minusDays(1);
LocalDate d3 = d1.plusDays(-1);
 
System.out.println(d1); //=> 2017-08-17
System.out.println(d2); //=> 2017-08-16
System.out.println(d3); //=> 2017-08-16

Immutable なので Calendar のように計算メソッドを使っても自身の値は変更されない。 減算メソッドに日数を渡すと減らせる。加算メソッドに負の数を渡しても日付を減算できる。

明日の日付を得る(日付を日にちで加算する)

減算の逆の操作でできる。

java/ope/datetime_ope/localdate_class.txt · 最終更新: 2019-07-05 19:25 by ore