Ce face time.Time.Compare
t.Compare(u) returnează -1 dacă t este înainte de u, 0 dacă sunt același moment și +1 dacă t este după. Este forma de care au nevoie funcțiile de sortare din pachetele slices și sort.
Ca și Equal, compară momentul real, indiferent de fusul orar în care este scris.
Parametri
| Parametru | Descriere |
|---|---|
u |
Momentul cu care compari. |
Ce returnează
-1, 0 sau +1.
Exemple
Exemplul 1: Sortarea programărilor
package main
import (
"fmt"
"slices"
"time"
)
type Programare struct {
Pacient string
Ora time.Time
}
func main() {
zi := func(h, m int) time.Time { return time.Date(2026, 10, 19, h, m, 0, 0, time.UTC) }
lista := []Programare{
{"Maria", zi(11, 30)},
{"Andrei", zi(9, 0)},
{"Ioana", zi(10, 15)},
}
slices.SortFunc(lista, func(a, b Programare) int {
return a.Ora.Compare(b.Ora)
})
for _, p := range lista {
fmt.Println(p.Ora.Format("15:04"), p.Pacient)
}
}
Rezultat
09:00 Andrei
10:15 Ioana
11:30 Maria
Exemplul 2: Valorile returnate
package main
import (
"fmt"
"time"
)
func main() {
a := time.Date(2026, 10, 19, 12, 0, 0, 0, time.UTC)
b := a.Add(time.Hour)
fmt.Println(a.Compare(b), b.Compare(a), a.Compare(a))
}
Rezultat
-1 1 0
Greșeli frecvente
- Scrii o funcție de comparare cu
Beforecare returnează doar -1 sau 1 și uiți cazul egal;Comparetratează toate trei cazurile.
Comenzi înrudite
time.Time.Before: Before, After și Equal compară două momente: este t înainte, după sau exact în același moment cu u?time.Time: Tipul care ține un moment în timp: dată, oră, nanosecunde și fusul orar. Se creează cu time.Date sau time.Now.