Int.seconds în Kotlin

Creează o durată (Duration) dintr-un număr: 90.seconds, 5.minutes, 250.milliseconds.

Sintaxă
import kotlin.time.Duration.Companion.seconds
val Int.seconds: Duration
val Int.minutes: Duration
val Int.milliseconds: Duration
val Int.hours: Duration

Ce face Int.seconds

kotlin.time.Duration reprezintă o durată de timp. O creezi cel mai ușor cu proprietățile de extensie: 30.seconds, 5.minutes, 250.milliseconds, 2.hours, 3.days. Fiecare trebuie importată din kotlin.time.Duration.Companion.

Duratele se pot aduna, scădea, înmulți cu un număr și compara (<, >). La afișare, o durată se scrie într-o formă ușor de citit: 90.seconds apare ca 1m 30s, iar 1500.milliseconds ca 1.5s. Avantajul față de un simplu Int este că unitatea face parte din valoare, deci nu mai confunzi secundele cu milisecundele.

Ce returnează

Un obiect Duration.

Exemple

Exemplul 1: Crearea și afișarea duratelor

Fiecare durată se afișează automat în unitățile potrivite.

import kotlin.time.Duration.Companion.milliseconds
import kotlin.time.Duration.Companion.minutes
import kotlin.time.Duration.Companion.seconds

fun main() {
    println(90.seconds)
    println(5.minutes)
    println(1500.milliseconds)
    println(150.minutes)
}

Rezultat

1m 30s
5m
1.5s
2h 30m

Exemplul 2: Calcule cu durate

Adunăm durata melodiilor dintr-o listă de redare și comparăm cu o oră.

import kotlin.time.Duration
import kotlin.time.Duration.Companion.minutes
import kotlin.time.Duration.Companion.seconds

fun main() {
    val melodii = listOf(3.minutes + 45.seconds, 4.minutes + 12.seconds, 5.minutes + 3.seconds)
    val total = melodii.fold(Duration.ZERO) { acc, d -> acc + d }
    println("Total: $total")
    println("Repetat de 5 ori: ${total * 5}")
    println("Mai mult de o oră? ${total * 5 > 60.minutes}")
}

Rezultat

Total: 13m
Repetat de 5 ori: 1h 5m
Mai mult de o oră? true

Exemplul 3: Timpul de gătire

O rețetă cere 20 de minute de pregătire și 45 de coacere; scădem cât a trecut deja.

import kotlin.time.Duration.Companion.minutes

fun main() {
    val total = 20.minutes + 45.minutes
    val trecut = 38.minutes
    println("Durata totală: $total")
    println("Mai rămân: ${total - trecut}")
}

Rezultat

Durata totală: 1h 5m
Mai rămân: 27m

Greșeli frecvente

  • Uiți importul și primești Unresolved reference: seconds. Importă fiecare unitate: import kotlin.time.Duration.Companion.seconds.
  • Folosești un Int pentru timeout și nu mai știi dacă înseamnă secunde sau milisecunde. Un Duration păstrează unitatea.

Comenzi înrudite

  • Duration.inWholeSeconds: Transformă o durată într-un număr Long de secunde sau milisecunde întregi (restul se taie).
  • measureTimeMillis: Măsoară cât durează un bloc de cod: measureTimeMillis dă milisecunde (Long), measureTime dă un Duration.
  • Thread.sleep: Oprește programul (firul curent) pentru un număr dat de milisecunde, apoi continuă.