Метод time.Duration.Truncate
Метод Truncate выполняет усечение длительности до ближайшего кратного заданному интервалу значения в сторону нуля. Он принимает один параметр - интервал time.Duration, до которого нужно выполнить усечение, и возвращает новую длительность time.Duration. Если переданный интервал меньше или равен нулю, метод возвращает исходную длительность без изменений.
Синтаксис
duration.Truncate(interval)
Пример
Давайте усечем длительность 1h30m45s до ближайшего значения, кратного 1h:
package main
import (
"fmt"
"time"
)
func main() {
duration := 1*time.Hour + 30*time.Minute + 45*time.Second
res := duration.Truncate(time.Hour)
fmt.Println(res)
}
Результат выполнения кода:
"1h0m0s"
Пример
Давайте усечем длительность 2h45m30s до ближайшего значения, кратного 30m:
package main
import (
"fmt"
"time"
)
func main() {
duration := 2*time.Hour + 45*time.Minute + 30*time.Second
res := duration.Truncate(30 * time.Minute)
fmt.Println(res)
}
Результат выполнения кода:
"2h30m0s"
Пример
Давайте рассмотрим усечение отрицательной длительности -2h45m30s до ближайшего значения, кратного 30m:
package main
import (
"fmt"
"time"
)
func main() {
duration := -2*time.Hour - 45*time.Minute - 30*time.Second
res := duration.Truncate(30 * time.Minute)
fmt.Println(res)
}
Результат выполнения кода:
"-2h30m0s"
Пример
Давайте усечем длительность до значения, кратного 5s, когда длительность уже кратна этому интервалу:
package main
import (
"fmt"
"time"
)
func main() {
duration := 1*time.Hour + 15*time.Minute
res := duration.Truncate(15 * time.Minute)
fmt.Println(res)
}
Результат выполнения кода:
"1h15m0s"
Пример
Давайте рассмотрим случай, когда интервал усечения меньше или равен нулю:
package main
import (
"fmt"
"time"
)
func main() {
duration := 1*time.Hour + 30*time.Minute
resZero := duration.Truncate(0)
resNegative := duration.Truncate(-time.Hour)
fmt.Println("zero interval:", resZero)
fmt.Println("negative interval:", resNegative)
}
Результат выполнения кода:
"zero interval: 1h30m0s"
"negative interval: 1h30m0s"
Смотрите также
-
метод
time.Duration.Round,
который выполняет округление длительности до ближайшего кратного значения -
метод
time.Duration.Abs,
который возвращает абсолютное значение длительности -
метод
time.Duration.Hours,
который возвращает длительность в часах как число с плавающей точкой -
метод
time.Time.Truncate,
который выполняет усечение времени до ближайшего кратного значения