menu
書いてる野郎
orebike@gmail.com
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 のように計算メソッドを使っても自身の値は変更されない。 減算メソッドに日数を渡すと減らせる。加算メソッドに負の数を渡しても日付を減算できる。
減算の逆の操作でできる。