РЕПЕТИТОР математика физика информатика
Для школьников и студентов. Подтягивание пробелов. ЦЭ, ЦТ, ОГЭ, ЕГЭ.
Идет набор на ЛЕТО. Жмите для подробностей:)
725 of 1593 menu

Тип time.Duration

Тип time.Duration представляет собой промежуток времени и выражается в наносекундах. Он используется во многих функциях пакета time, например, для установки таймаутов, задержек и измерения длительности операций. Значение типа time.Duration может быть как положительным, так и отрицательным.

Синтаксис

Значения time.Duration создаются с помощью числовых литералов с множителями:

const ( dur = 5 * time.Second )

Также можно преобразовать целое число в time.Duration:

dur := time.Duration(10) * time.Second

Константы длительности

Пакет time предоставляет константы для распространенных единиц измерения времени:

time.Nanosecond // 1 наносекунда time.Microsecond // 1 микросекунда time.Millisecond // 1 миллисекунда time.Second // 1 секунда time.Minute // 1 минута time.Hour // 1 час

Обратите внимание, что константа time.Minute равна 60 секундам, а time.Hour - 60 минутам.

Метод Hours

Метод Hours возвращает длительность в часах как число с плавающей точкой:

package main import ( "fmt" "time" ) func main() { dur := 2*time.Hour + 30*time.Minute res := dur.Hours() fmt.Println(res) }

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

"2.5"

Метод Minutes

Метод Minutes возвращает длительность в минутах как число с плавающей точкой:

package main import ( "fmt" "time" ) func main() { dur := 90 * time.Minute res := dur.Minutes() fmt.Println(res) }

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

"90"

Метод Seconds

Метод Seconds возвращает длительность в секундах как число с плавающей точкой:

package main import ( "fmt" "time" ) func main() { dur := 5*time.Second + 500*time.Millisecond res := dur.Seconds() fmt.Println(res) }

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

"5.5"

Метод Milliseconds

Метод Milliseconds возвращает длительность в миллисекундах как целое число:

package main import ( "fmt" "time" ) func main() { dur := 2*time.Second + 300*time.Millisecond res := dur.Milliseconds() fmt.Println(res) }

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

"2300"

Метод Nanoseconds

Метод Nanoseconds возвращает длительность в наносекундах как целое число:

package main import ( "fmt" "time" ) func main() { dur := 2*time.Microsecond + 500*time.Nanosecond res := dur.Nanoseconds() fmt.Println(res) }

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

"2500"

Метод String

Метод String возвращает строковое представление длительности в человекочитаемом формате:

package main import ( "fmt" "time" ) func main() { dur := 3*time.Hour + 15*time.Minute + 30*time.Second res := dur.String() fmt.Println(res) }

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

"3h15m30s"

Метод Truncate

Метод Truncate округляет длительность вниз до ближайшего значения, кратного переданной длительности:

package main import ( "fmt" "time" ) func main() { dur := 2*time.Hour + 45*time.Minute + 30*time.Second res := dur.Truncate(time.Hour) fmt.Println(res) }

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

"2h0m0s"

Метод Round

Метод Round округляет длительность до ближайшего значения, кратного переданной длительности:

package main import ( "fmt" "time" ) func main() { dur := 2*time.Hour + 45*time.Minute + 30*time.Second res := dur.Round(time.Hour) fmt.Println(res) }

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

"3h0m0s"

Метод Abs

Метод Abs возвращает абсолютное значение длительности:

package main import ( "fmt" "time" ) func main() { dur := -10 * time.Second res := dur.Abs() fmt.Println(res) }

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

"10s"

Пример с таймаутом

Рассмотрим использование time.Duration для установки таймаута операции:

package main import ( "fmt" "time" ) func main() { timeout := 5 * time.Second // Имитация длительной операции select { case <-time.After(timeout): fmt.Println("Operation timed out") } }

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

"Operation timed out"

Сравнение длительностей

Значения time.Duration можно сравнивать с помощью обычных операторов сравнения:

package main import ( "fmt" "time" ) func main() { dur1 := 10 * time.Second dur2 := 5 * time.Second if dur1 > dur2 { fmt.Println("dur1 is longer") } }

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

"dur1 is longer"

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

  • тип time.Time,
    который представляет момент времени
  • функцию time.ParseDuration,
    которая разбирает строку в длительность
  • метод time.Time.Sub,
    который вычисляет разницу между двумя моментами времени
  • метод time.Time.Add,
    который добавляет длительность к моменту времени
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить