将来または過去の日付を計算する

Kotlin:
将来または過去の日付を計算する

How to:(やり方)

import java.time.LocalDate
import java.time.temporal.ChronoUnit

fun main() {
    val today = LocalDate.now()
    val tenDaysLater = today.plusDays(10)
    val twoWeeksBefore = today.minus(2, ChronoUnit.WEEKS)

    println("Today: $today") // 例:Today: 2023-04-01
    println("10 days later: $tenDaysLater") // 例:10 days later: 2023-04-11
    println("Two weeks before: $twoWeeksBefore") // 例:Two weeks before: 2023-03-18
}

このコードは今日の日付を取得し、10日後と2週間前の日付を計算して出力します。

Deep Dive(掘り下げ)

日付を操作するには、過去はjava.util.Datejava.util.Calendarが使われてきましたが、Java 8以降ではjava.timeパッケージにあるLocalDateLocalDateTimeZonedDateTimeが推奨されています。これらのクラスは不変(Immutable)であり、日時操作における一般的な問題を減らします。plusminusメソッドを利用することで、簡単に日付の加算・減算ができるようになっています。

KotlinではJavaのライブラリを利用できるため、上記のメソッドがそのまま使用可能です。他の代替手段には、オープンソースの日付・時刻ライブラリであるJoda-Timeがありますが、現在ではjava.timeに移行することが一般的です。

具体的な実装には、日付の加算だけでなくビジネス日(休業日を除く)の計算や、タイムゾーンを考慮した計算など、ケースに応じたさまざまな処理が必要になることがあります。これらはjava.timeパッケージを使っても、時には追加のライブラリや自作のロジックが必要になるかもしれません。

See Also(関連情報)