Метод time.Time.Sub

Метод time.Time.Sub вычисляет разницу между двумя моментами времени. Он вызывается на одном объекте time.Time и принимает в качестве аргумента другой момент времени. В результате возвращается значение типа time.Duration, которое представляет собой промежуток времени между двумя точками. Если первый момент времени позже второго, результат будет положительным, если раньше — отрицательным.

Синтаксис

got1.Sub(t2)

где t1 и t2 — моменты времени типа time.Time.

Пример

Вычислим разницу между двумя моментами времени:

gopackage main

import (
  "fmt"
  "time"
)

func main() {
  t1 := time.Date(2026, time.September, 4, 12, 0, 0, 0, time.UTC)
  t2 := time.Date(2026, time.September, 4, 10, 30, 0, 0, time.UTC)

  res := t1.Sub(t2)
  fmt.Println(res)
}

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

go"1h30m0s"

В данном примере разница между t1 и t2 составляет 1 час 30 минут, что и было выведено на экран.

Пример

Если первый момент времени раньше второго, результат будет отрицательным:

gopackage main

import (
  "fmt"
  "time"
)

func main() {
  t1 := time.Date(2026, time.September, 4, 9, 0, 0, 0, time.UTC)
  t2 := time.Date(2026, time.September, 4, 14, 15, 0, 0, time.UTC)

  res := t1.Sub(t2)
  fmt.Println(res)
}

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

go"-5h15m0s"

Здесь t1 раньше t2 на 5 часов 15 минут, поэтому результат вышел отрицательным.

Пример

Разницу во времени можно преобразовать в более удобные единицы с помощью методов типа time.Duration:

gopackage main

import (
  "fmt"
  "time"
)

func main() {
  t1 := time.Date(2026, time.September, 4, 23, 0, 0, 0, time.UTC)
  t2 := time.Date(2026, time.September, 4, 20, 30, 0, 0, time.UTC)

  diff := t1.Sub(t2)

  hours := diff.Hours()
  minutes := diff.Minutes()
  seconds := diff.Seconds()

  fmt.Println(hours)
  fmt.Println(minutes)
  fmt.Println(seconds)
}

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

go"2.5"
"150"
"9000"

В этом примере разница в 2 часа 30 минут была преобразована в часы, минуты и секунды.

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

  • метод time.Time.Add,
    который прибавляет продолжительность к моменту времени
  • метод time.Time.Before,
    который проверяет, предшествует ли момент времени другому
  • метод time.Time.After,
    который проверяет, наступает ли момент времени после другого
  • функцию time.Since,
    которая возвращает время, прошедшее с указанного момента