Ce face time.Duration.Round
Duratele măsurate au multe zecimale (1.234567891s). d.Round(time.Millisecond) le rotunjește la cea mai apropiată milisecundă, iar d.Truncate(time.Second) taie tot ce este sub o secundă. La jumătate, Round rotunjește departe de zero.
Dacă m <= 0, ambele returnează durata neschimbată.
Parametri
| Parametru | Descriere |
|---|---|
m |
Multiplul: time.Second, time.Millisecond, time.Minute etc. |
Ce returnează
Durata rotunjită (time.Duration).
Exemple
Exemplul 1: Aceeași durată, rotunjită diferit
package main
import (
"fmt"
"time"
)
func main() {
d, _ := time.ParseDuration("1h15m30.918273645s")
pasi := []time.Duration{time.Nanosecond, time.Microsecond, time.Millisecond, time.Second, time.Minute, time.Hour}
for _, m := range pasi {
fmt.Printf("m = %-6v Round: %-20v Truncate: %v\n", m, d.Round(m), d.Truncate(m))
}
}
Rezultat
m = 1ns Round: 1h15m30.918273645s Truncate: 1h15m30.918273645s
m = 1µs Round: 1h15m30.918274s Truncate: 1h15m30.918273s
m = 1ms Round: 1h15m30.918s Truncate: 1h15m30.918s
m = 1s Round: 1h15m31s Truncate: 1h15m30s
m = 1m0s Round: 1h16m0s Truncate: 1h15m0s
m = 1h0m0s Round: 1h0m0s Truncate: 1h0m0s
Exemplul 2: Timpi de concurs
package main
import (
"fmt"
"time"
)
func main() {
timpi := map[string]time.Duration{
"Ana": 41*time.Minute + 12*time.Second + 487*time.Millisecond,
"Vlad": 39*time.Minute + 58*time.Second + 502*time.Millisecond,
"Sorin": 44*time.Minute + 3*time.Second + 99*time.Millisecond,
}
for _, nume := range []string{"Ana", "Vlad", "Sorin"} {
t := timpi[nume]
fmt.Printf("%-6s %-12v -> %-7v (Truncate: %v)\n", nume, t, t.Round(time.Second), t.Truncate(time.Second))
}
}
Rezultat
Ana 41m12.487s -> 41m12s (Truncate: 41m12s)
Vlad 39m58.502s -> 39m59s (Truncate: 39m58s)
Sorin 44m3.099s -> 44m3s (Truncate: 44m3s)
Greșeli frecvente
- Formatezi durata cu
%.2f:time.Durationeste întreg. Rotunjește cuRoundși afișează cu%v, sau foloseșted.Seconds()cu%.2f.
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.Hours: Transformă o durată în număr de ore, minute sau secunde (float64) ori milisecunde (int64).time.Time.Truncate: Rotunjește un moment la un multiplu de durată: Truncate în jos, Round la cel mai apropiat (ex. la ora sau sfertul de oră).