Метод time.Time.Truncate
Метод Truncate возвращает значение времени time.Time,
округленное вниз до указанной длительности time.Duration.
Он полезен, когда нужно отбросить секунды, минуты или часы,
получив начало интервала. Округление производится относительно
начала эпохи (1970-01-01 00:00:00 UTC). Если передать в качестве
аргумента отрицательную длительность, метод вернет исходное время
без изменений.
Синтаксис
t.Truncate(d time.Duration) time.Time
Пример
Округлим время до начала минуты, отбросив секунды и наносекунды:
package main
import (
"fmt"
"time"
)
func main() {
t := time.Date(2026, 9, 4, 15, 30, 45, 123456789, time.UTC)
res := t.Truncate(time.Minute)
fmt.Println(res)
}
Результат выполнения кода:
"2026-09-04 15:30:00 +0000 UTC"
Пример
Округлим время до начала часа, отбросив минуты и секунды:
package main
import (
"fmt"
"time"
)
func main() {
t := time.Date(2026, 9, 4, 15, 30, 45, 123456789, time.UTC)
res := t.Truncate(time.Hour)
fmt.Println(res)
}
Результат выполнения кода:
"2026-09-04 15:00:00 +0000 UTC"
Пример
Округлим время до начала дня, отбросив часы, минуты и секунды:
package main
import (
"fmt"
"time"
)
func main() {
t := time.Date(2026, 9, 4, 15, 30, 45, 123456789, time.UTC)
res := t.Truncate(24 * time.Hour)
fmt.Println(res)
}
Результат выполнения кода:
"2026-09-04 00:00:00 +0000 UTC"
Пример
Если передать отрицательную длительность, время не изменится:
package main
import (
"fmt"
"time"
)
func main() {
t := time.Date(2026, 9, 4, 15, 30, 45, 123456789, time.UTC)
res := t.Truncate(-1 * time.Minute)
fmt.Println(res)
}
Результат выполнения кода:
"2026-09-04 15:30:45.123456789 +0000 UTC"
Смотрите также
-
метод
time.Time.Round,
который выполняет округление времени до ближайшей длительности -
функцию
time.Duration.Truncate,
которая округляет длительность вниз до заданного значения -
метод
time.Time.AddDate,
который добавляет годы, месяцы и дни к времени -
метод
time.Time.Sub,
который вычисляет разницу между двумя моментами времени