LoginSignup
10
5

More than 3 years have passed since last update.

【Kotlin】LocalDateTimeで2つの日付を比較し、日数の差分を取得する

Last updated at Posted at 2019-07-28

はじめに

日付/時間を扱うAPIには

  • 日付のみを保持するLocalDate
  • 時刻のみを保持するLocalTime
  • 日付と時刻の両方を保持するLocalDateTime

があり、やりたいことに合わせて適切なAPIを使うわけですが、
日数の差分を取得するためには、LocalDateTimeで日付を比較する方法がスマートだと感じたので、ここにメモしておきます。

※なお、「日付」の比較ということで当初はLocalDatecompareToメソッドを使っていたのですが、下記記事に書いた通り、意図しない結果になることがありました。

【Kotlin】LocalDateで2つの日付を比較し、日数の差分を取得する - Qiita
【Android】LocalDate#compareToで日付を比較する際の注意点 - Qiita

コード

非常にシンプルで、ChronoUnit.DAYS.betweenを使うことで日数の差分が取得できます。
LocalDateTimeChronoUnitはThreeTenABPライブラリのものを使っています。)

val now = LocalDateTime.now() //2019-07-28T15:31:59.754
val day1 = LocalDateTime.parse("2019-08-28T10:15:30.123")
val diff = ChronoUnit.DAYS.between(now, day1) // diff: 30

ChronoUnitとは

ChronoUnitは日付、時間などを操作するための「単位」を集めた列挙型です。
1日の概念を表すDAYSの他にも、1時間の概念を表すHOURS、1マイクロ秒の概念を表すMICROS、1世紀の概念を表すCENTURIESなど、多くの単位が定義されています。

詳細:ChronoUnit (Java Platform SE 8)

参考

10
5
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
10
5