Java 8の新しい日時API

1628 ワード

LocalDate
取得システムの日付:LocalDate.now();
LocalDate date = LocalDate.now();

TemporalFiledを使用してLocalDateの値を読み込む
int year = date.get(ChronoField.YEAR);
int month = date.get(ChronoField.MONTH_OF_YEAR);
int day = date.get(ChronoField.DAY_OF_MONTH);

LocalTime
LocalTime time = LocalTime.of(12, 45, 11); //13:45:11
LocalTime hour = time.getHour();
LocalTime minute = time.getMinute();
LocalTime secound = time.getSecound();

LocalDateTime
LocalDateTime dt1 = LocalDateTime.of(2017, 9, 14, 11, 11, 11);// 2017-9-11 11:11:11
LocalDateTime dt2 = LocalDateTime.of(date, time);
LocalDateTime dt3 = LocalDateTime.atTime(13, 45, 20);
LocalDateTime dt4 = LocalDateTime.atDate(date);

Instant(タイムスタンプ)
Instant instant = Instant.now();

DurationとPeriodオブジェクト
Duration d1 = Duration.between(time1, time2);
Duration d2 = Duration.between(dateTime1, dateTime2);
Druation d3 = Duration.between(instant1, instant2);

PeriodはDurationと似たようなAPIを持っている.Durationクラスは、主に秒とナノ秒の時間の長さを測定するために使用されます.Periodクラスは、年、月、または日の形式で複数の時間をモデリングします.
操作日
LocalDate date1 = LocalDate.of(2017, 9, 14);
LocalDate date2 = date1.withYear(2018);
LocalDate date3 = date1.withDayOfMonth(28);
LocalDate date4 = date1.with(ChronoField.MONTH_OF_YEAR, 10);

日付書式
LocalDate date1 = LocalDate.of(2017, 9, 18);
String s1 = date1.format(DateTimeFormatter.BASIC_ISO_DATE);//20170918
String s2 = date1.format(DateTimeFormatter.ISO_LOCAL_DATE);//2017-09-18