Метод time.Time.Sub
Метод time.Time.Sub вычисляет разницу между двумя моментами времени.
Он вызывается на одном объекте time.Time и принимает в качестве аргумента
другой момент времени. В результате возвращается значение типа
time.Duration, которое представляет собой промежуток времени
между двумя точками. Если первый момент времени позже второго,
результат будет положительным, если раньше — отрицательным.
Синтаксис
t1.Sub(t2)
где t1 и t2 — моменты времени типа time.Time.
Пример
Вычислим разницу между двумя моментами времени:
package 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)
}
Результат выполнения кода:
"1h30m0s"
В данном примере разница между t1 и t2 составляет 1 час 30 минут,
что и было выведено на экран.
Пример
Если первый момент времени раньше второго, результат будет отрицательным:
package 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)
}
Результат выполнения кода:
"-5h15m0s"
Здесь t1 раньше t2 на 5 часов 15 минут, поэтому результат
вышел отрицательным.
Пример
Разницу во времени можно преобразовать в более удобные единицы
с помощью методов типа time.Duration:
package 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)
}
Результат выполнения кода:
"2.5"
"150"
"9000"
В этом примере разница в 2 часа 30 минут была преобразована в часы, минуты и секунды.
Смотрите также
-
метод
time.Time.Add,
который прибавляет продолжительность к моменту времени -
метод
time.Time.Before,
который проверяет, предшествует ли момент времени другому -
метод
time.Time.After,
который проверяет, наступает ли момент времени после другого -
функцию
time.Since,
которая возвращает время, прошедшее с указанного момента