Java Date and Time API

Java Date and Time APIについていろいろ

//年月日日時
System.out.println(LocalDateTime.now());
//年月日
System.out.println(LocalDate.now());
//時間のみ
System.out.println(LocalTime.now());

結果

2018-05-04T11:36:00.778
2018-05-04
11:36:00.779

LocalDateオブジェクトの生成

//指定した日付のLocalDateを生成
LocalDate day = LocalDate.of(2018, 5, 1);

//月を表すenumがあるので、そちらを使用したほうがよい
LocalDate day2 = LocalDate.of(2018, Month.MAY, 1);

//LocalDateはコンストラクタではなくファクトリメソッドでオブジェクトを生成する

日付の加減算

//基準日の生成(2018/1/1)
LocalDate day = LocalDate.of(2018, Month.JANUARY, 1);
//1年後
LocalDate after1Years = day.plus(1, ChronoUnit.YEARS);
//10日前
LocalDate before10Days = day.minus(10, ChronoUnit.DAYS);

//第1引数に値、第2引数にどの日時単位の加減算をするかを表すchronoUnitを指定する

日付の間の時間量

//月数の時間量
long until = day.until(day2, ChronoUnit.MONTHS);
//日数の時間量
long untilDate = day.until(day2, ChronoUnit.DAYS);

Periodクラスを使用した時間量の計算

//基準日の生成(2018/1/1)
LocalDate day = LocalDate.of(2018, Month.JANUARY, 1);
//基準日の生成(2020/5/25)
LocalDate day2 = LocalDate.of(2020, Month.MAY, 25);

Period period = Period.between(day, day2);
//日付間隔 → 24
int days = period.getDays();
//月間隔 → 4
int months = period.getMonths();
//年間隔 → 2
int years = period.getYears();

日付フォーマッタを使用したフォーマット

LocalDate date = LocalDate.of(2018, Month.MAY, 1);
//BASIC_ISO_DATEでフォーマットする
//これ以外にも基本的なフォーマットはDateTimeFormatterクラスに用意されている
DateTimeFormatter formatter = DateTimeFormatter.BASIC_ISO_DATE;
//2018-05-01
System.out.println(date);
//20180501
System.out.println(formatter.format(date));

//ofPatternを使用すると独自フォーマッタが作成できる
DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyyねんMMがつddにち");
//2018ねん05がつ01にち
System.out.println(formatter.format(date));