Метод time.Time.Equal
Метод Equal сравнивает два момента времени и возвращает
true, если они представляют один и тот же момент времени.
В отличие от оператора ==, который сравнивает значения
структур, Equal корректно учитывает часовые пояса и
монотонные часы. В качестве получателя выступает первое время,
а в параметр передается второе время для сравнения.
Синтаксис
t1.Equal(t2)
Пример
Давайте сравним два одинаковых момента времени:
package main
import (
"fmt"
"time"
)
func main() {
t1 := time.Date(2026, time.September, 4, 15, 30, 0, 0, time.UTC)
t2 := time.Date(2026, time.September, 4, 15, 30, 0, 0, time.UTC)
res := t1.Equal(t2)
fmt.Println(res)
}
Результат выполнения кода:
true
Пример
Теперь сравним два разных момента времени:
package main
import (
"fmt"
"time"
)
func main() {
t1 := time.Date(2026, time.September, 4, 15, 30, 0, 0, time.UTC)
t2 := time.Date(2026, time.September, 4, 16, 30, 0, 0, time.UTC)
res := t1.Equal(t2)
fmt.Println(res)
}
Результат выполнения кода:
false
Пример
Важная особенность Equal — корректное сравнение времен
в разных часовых поясах, которые представляют один и тот же
момент времени:
package main
import (
"fmt"
"time"
)
func main() {
t1 := time.Date(2026, time.September, 4, 12, 0, 0, 0, time.UTC)
loc := time.FixedZone("MSK", 3*60*60)
t2 := time.Date(2026, time.September, 4, 15, 0, 0, 0, loc)
res := t1.Equal(t2)
fmt.Println(res)
}
Результат выполнения кода:
true