Obliczanie daty w przyszłości lub przeszłości

Kotlin:
Obliczanie daty w przyszłości lub przeszłości

Jak to zrobić:

Na początek potrzebujemy prostego kodu. Użyjemy LocalDate z biblioteki java.time, która jest dostępna w Kotlinie. Tak to zrobisz:

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

fun main() {
    val today = LocalDate.now()
    val tenDaysLater = today.plusDays(10)
    val tenDaysBefore = today.minusDays(10)

    println("Dzisiaj jest: $today")
    println("Za 10 dni będzie: $tenDaysLater")
    println("10 dni temu było: $tenDaysBefore")
}

Wyjście (zależnie od aktualnej daty):

Dzisiaj jest: 2023-04-01
Za 10 dni będzie: 2023-04-11
10 dni temu było: 2023-03-22

Głębsze spojrzenie:

Biblioteka java.time wprowadzona w Javie 8 (i dostępna w Kotlinie) to nowoczesne API do obchodzenia się z datą i czasem, który zastąpił starsze, mniej intuicyjne klasy jak java.util.Date. W Kotlinie możemy używać tej biblioteki bezpośrednio, albo z pomocą Kotlin extensions, które czynią kod nawet bardziej czytelnym.

Obecnie java.time jest standardem do pracy z datami w Javie oraz Kotlinie, ale istnieją też alternatywy jak Joda-Time – już jednak coraz rzadziej używana po wprowadzeniu nowego API.

Warte zastanowienia są też kwestie stref czasowych – LocalDate ignoruje strefy czasowe, więc jeśli działamy globalnie, możemy potrzebować ZonedDateTime.

Dodatkowo, możemy manipulować datami odpowiadającymi różnym jednostkom czasu używając plus i minus z różnymi argumentami jak ChronoUnit.WEEKS czy ChronoUnit.MONTHS, ale pamiętaj o niuansach związanych ze zmianą czasu letniego/zimowego itp.

Zobacz również: