Kotlinで日付の差分を計算する方法

目次

  1. 背景
  2. ChronoUnitを使用する
  3. Chronounitの時間単位
  4. まとめ
  5. 関連記事
  6. PR

背景

こんにちは。 かりんとうマニア(@karintozuki)です。
今回はKotlinで二つの日付、LocalDateTimeを比較する方法を紹介します。

ChronoUnitを使用する

KotlinにはChronoUnitというクラスがあるので、
それを利用していきましょう。

現在時から午後10時まで何分あるかを計算するプログラムを書いてみます。

Compare.kts
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
import java.time.LocalDateTime
import java.time.format.DateTimeFormatter
import java.time.temporal.ChronoUnit

// 現在時刻の取得
val now = LocalDateTime.now()
println(now) // 2020-10-06T21:26:58.536212

// 10:00PMのLocalDateTimeを作成
val dtf = DateTimeFormatter.ofPattern("yyyy/MM/dd HH:mm:ss")
val target = LocalDateTime.parse("2020/10/06 22:00:00", dtf)

// 差分を計算
val minutes: Long = ChronoUnit.MINUTES.between(LocalDateTime.now(), target)

print(minutes) // 結果: 33

特解解説も必要ないかと思いますが、
ChronoUnit.{時間の単位}.between(時間1, 時間2)
とすることで時間の差分が計算できます。

Chronounitの時間単位

時間の単位として、ChronoUnit Classに以下のようなものが用意されています。

メンバ名 単位
NANOS ナノ秒
MICROS マイクロ秒
MILLIS ミリ秒
SECONDS
MINUTES
HOURS 時間
HALF_DAYS 12時間
DAYS
MONTHS
YEARS
DECADES 10年
CENTURIES 100年
MILLENNIA 1000年
ERAS 10億年
FOREVER そして永遠へ。。。

DECADES以降はそうそう使わないと思うけど
なんか面白いですね。
ちなみにFOREVERは2.92277266 × 10^11年(3千億年くらい)として定義されているらしいです。
参考:Java 9. Where “forever” is hard coded.

まとめ

今回はKotlinでの日付の比較について紹介しました。

それじゃ今日はこの辺で。

関連記事

こちらの記事もおすすめ。

Kotlinで日付をフォーマットする方法
アプリ未経験エンジニアが独学で個人開発Androidアプリを公開するまでにやったこと

PR

あなたの会社はあなたの技術を評価してくれていますか?
技術力を高めようと頑張っているのに、
技術が評価されないような会社にいたらそれは良い環境なのでしょうか?
エンジニアとして技術を高めたいのなら環境を選ぶことも大事です。

レバテックキャリア
エンジニアとして働いていて実務経験があるなら、
求人数の充実具合からレバテックキャリアがおすすめです。
IT転職ではデファクト・スタンダードですね。
▼レバテック キャリア 登録はこちら▼


Tech Clips
Tech Clipsは年収500万以上&自社サービスを持った会社に特化した求人サイトです。
首都圏限定になってはしまいますが、
収入を増やしたい、自社サービスを持った企業への転職をしたい人におすすめです。

▼Tech Clips 登録はこちら▼