Študijné materiály

Locale a dátumy

Locale určuje jazyk a krajinu, ktoré aplikácia používa napríklad pri formátovaní mien, čísel alebo názvov mesiacov. Pre Slovensko použijeme Locale("sk", "SK").

import java.util.Locale

fun main() {
    val slovensko = Locale("sk", "SK")
    val anglicko = Locale.US

    println(slovensko.displayCountry) // Slovensko
    println(anglicko.displayLanguage) // English
}

Pre prácu s dátumami a časom používame moderné API java.time. Trieda LocalDate reprezentuje dátum bez času a časového pásma.

import java.time.LocalDate

fun main() {
    val dnes = LocalDate.now()
    val datum = LocalDate.of(2026, 8, 12)

    println(dnes)
    println(datum) // 2026-08-12
}

24.1.1 Formátovanie dátumu

Predvolený zápis dátumu je rok-mesiac-deň. Vlastný formát vytvoríme pomocou DateTimeFormatter. Pri slovenskom názve mesiaca nastavíme aj Locale.

import java.time.LocalDate
import java.time.format.DateTimeFormatter
import java.util.Locale

fun main() {
    val datum = LocalDate.of(2026, 8, 12)
    val format = DateTimeFormatter.ofPattern("d. MMMM yyyy", Locale("sk", "SK"))

    println(datum.format(format)) // 12. augusta 2026
}

Dátum môžeme aj načítať z textu, ak poznáme jeho formát:

import java.time.LocalDate
import java.time.format.DateTimeFormatter

fun main() {
    val format = DateTimeFormatter.ofPattern("d.M.yyyy")
    val datum = LocalDate.parse("12.8.2026", format)

    println(datum.year)  // 2026
    println(datum.month) // AUGUST
    println(datum.dayOfMonth) // 12
}

24.1.2 Operácie s dátumom a časom

K dátumu môžeme pripočítať alebo odpočítať dni, mesiace a roky. Pre dátum aj čas použijeme LocalDateTime.

import java.time.LocalDate
import java.time.LocalDateTime

fun main() {
    val dnes = LocalDate.now()
    println(dnes.plusDays(7))
    println(dnes.minusMonths(1))

    val teraz = LocalDateTime.now()
    println(teraz.plusHours(2))
}

Pri dátumoch nepoužívaj staré triedy Date a Calendar. V novom Kotlin/JVM kóde uprednostni java.time.

Úlohy

Úloha 1

Vytvor dátum svojich najbližších narodenín pomocou LocalDate.of. Vypíš ho vo formáte d. MMMM yyyy so slovenským Locale.

Úloha 2

Načítaj dátum vo formáte d.M.yyyy, spracuj ho cez LocalDate.parse a vypíš, aký deň v týždni tento dátum pripadá.

Úloha 3

Načítaj dátum začiatku dovolenky a počet dní. Pomocou plusDays vypočítaj a vypíš dátum jej posledného dňa.