Метод time.Time.Equal

Метод Equal сравнивает два момента времени и возвращает true, если они представляют один и тот же момент времени. В отличие от оператора ==, который сравнивает значения структур, Equal корректно учитывает часовые пояса и монотонные часы. В качестве получателя выступает первое время, а в параметр передается второе время для сравнения.

Синтаксис

got1.Equal(t2)

Пример

Давайте сравним два одинаковых момента времени:

gopackage 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)
}

Результат выполнения кода:

gotrue

Пример

Теперь сравним два разных момента времени:

gopackage 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)
}

Результат выполнения кода:

gofalse

Пример

Важная особенность Equal — корректное сравнение времен в разных часовых поясах, которые представляют один и тот же момент времени:

gopackage 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)
}

Результат выполнения кода:

gotrue

Смотрите также

  • метод Before,
    который проверяет, наступило ли время раньше другого
  • метод After,
    который проверяет, наступило ли время позже другого
  • метод IsZero,
    который проверяет, является ли время нулевым
  • метод Sub,
    который вычисляет разницу между двумя моментами времени