ZonedDateTimeから日付の文字列を取り出す

よく使うのでメモ。

@ val d = ZonedDateTime.now(ZoneId.of("UTC"))
d: ZonedDateTime = 2018-02-09T06:36:14.410Z[UTC]

"UTC"の部分には"Asia/Tokyo"などタイムゾーンの文字列を入れられる。

minusDays plusHoursなどで演算ができる。

@ d.minusDays(1)
res5: ZonedDateTime = 2018-02-08T06:36:14.410Z[UTC]

フォーマッターを定義する。

@ val f = DateTimeFormatter.ofPattern("yyyy-MM-dd")
f: DateTimeFormatter = Value(YearOfEra,4,19,EXCEEDS_PAD)'-'Value(MonthOfYear,2)'-'Value(DayOfMonth,2)

yyyy/MM/dd HH:mm:ss が年月日時分秒に対応する。

あとはZonedDateTimeのインスタンスにフォーマッターを渡せばOK

@ d.format(f)
res8: String = "2018-02-09"

参考

qiita.com