Ce face time.Duration.Hours
Hours(), Minutes() și Seconds() returnează durata ca număr zecimal (float64): 90 de minute dau 1.5 ore. Milliseconds() returnează un întreg (int64), cu partea fracționară tăiată. Există și Microseconds() și Nanoseconds().
Pentru „câte ore întregi și câte minute rămân” folosești împărțirea duratelor: d / time.Hour și d % time.Hour, ca în al doilea exemplu.
Ce returnează
float64 pentru Hours, Minutes, Seconds; int64 pentru Milliseconds.
Exemple
Exemplul 1: Ore lucrate și plată
package main
import (
"fmt"
"time"
)
func main() {
lucrat := 7*time.Hour + 45*time.Minute
tarif := 52.0 // lei pe oră
fmt.Println("Ore: ", lucrat.Hours())
fmt.Println("Minute: ", lucrat.Minutes())
fmt.Println("Secunde: ", lucrat.Seconds())
fmt.Println("Milisec: ", lucrat.Milliseconds())
fmt.Printf("De plată: %.2f lei\n", lucrat.Hours()*tarif)
scurt := 1750 * time.Microsecond
fmt.Println(scurt, "=", scurt.Milliseconds(), "ms întregi,", scurt.Seconds(), "s")
}
Rezultat
Ore: 7.75
Minute: 465
Secunde: 27900
Milisec: 27900000
De plată: 403.00 lei
1.75ms = 1 ms întregi, 0.00175 s
Exemplul 2: Afișare ore și minute
package main
import (
"fmt"
"time"
)
func oreMinute(d time.Duration) string {
ore := d / time.Hour
minute := (d % time.Hour) / time.Minute
return fmt.Sprintf("%d h %02d min", ore, minute)
}
func main() {
start := time.Date(2026, 10, 19, 6, 50, 0, 0, time.UTC)
sosire := time.Date(2026, 10, 19, 13, 25, 0, 0, time.UTC)
fmt.Println("Călătoria Iași - București:", oreMinute(sosire.Sub(start)))
fmt.Println(oreMinute(135 * time.Minute))
}
Rezultat
Călătoria Iași - București: 6 h 35 min
2 h 15 min
Greșeli frecvente
- Convertești cu
int(d.Hours())și pierzi minutele. Pentru ore și minute separate foloseșted / time.Hourșid % time.Hour. - Folosești
int64(d)ca număr de milisecunde.int64(d)este în nanosecunde; foloseșted.Milliseconds().
Comenzi înrudite
time.Duration: Tipul pentru o durată, păstrată în nanosecunde; se scrie ca 90*time.Minute și se afișează ca „1h30m0s”.time.Duration.Round: Rotunjește o durată la un multiplu: Round la cel mai apropiat, Truncate în jos (ex. la secundă pentru afișare).time.Time.Sub: Calculează cât timp a trecut între două momente și returnează diferența ca time.Duration.