type Duration int64
Duration представляет прошедшее время между двумя моментами в виде подсчета int64 наносекунд. Представление ограничивает наибольшую представляемую продолжительность приблизительно 290 годами.
package main
import (
"fmt"
"time"
)
func expensiveCall() {
time.Sleep(3 * time.Second)
}
func main() {
t0 := time.Now()
expensiveCall()
t1 := time.Now()
fmt.Printf("Вызов занимает %v для выполнения.\n",
t1.Sub(t0))
}
Вывод:
Вызов занимает 3.000154165s для выполнения.
Функция ParseDuration
func ParseDuration(s string) (Duration, error)
ParseDuration анализирует строку продолжительности. Строка продолжительности - это, возможно, последовательность десятичных чисел со знаком, каждое из которых содержит необязательную дробь и суффикс единицы, например "300ms", "-1.5h" или "2h45m". Допустимые единицы времени: "ns", "us" (или "µs"), "ms", "s", "m", "h".
Пример использования ParseDuration
package main
import (
"fmt"
"time"
)
func main() {
hours, _ := time.ParseDuration("10h")
complex, _ := time.ParseDuration("1h10m10s")
micro, _ := time.ParseDuration("1µs")
// Функция также принимает некорректный,
// но принятый префикс для micro.
micro2, _ := time.ParseDuration("1us")
fmt.Println(hours)
fmt.Println(complex)
fmt.Printf("%.0f секунд в %v.\n",
complex.Seconds(), complex)
fmt.Printf("%d наносекунд в %v.\n",
micro.Nanoseconds(), micro)
fmt.Printf("%6.2e секунд в %v.\n",
micro2.Seconds(), micro)
}
Вывод:
10h0m0s
1h10m10s
4210 секунд в 1h10m10s.
1000 наносекунд в 1µs.
1.00e-06 секунд в 1µs.
Функция Since
func Since(t Time) Duration
Since возвращает время, прошедшее с момента t. Это сокращение для time.Now().Sub(t).
Пример использования Since
package main
import (
"fmt"
"time"
)
func main() {
t := time.Now()
time.Sleep(3 * time.Second)
fmt.Printf("Прошло %v \n", time.Since(t))
}
Вывод:
Прошло 3s
Функция Until (с версии Go 1.8)
func Until(t Time) Duration
Until возвращает продолжительность до t. Это сокращение для t.Sub(time.Now()).
Пример использования Until
package main
import (
"fmt"
"time"
)
func main() {
t := time.Now()
time.Sleep(3 * time.Second)
fmt.Printf("Осталось %v \n", time.Until(t))
}
Вывод:
Осталось -3s
Читайте также:
- Пакет time в Golang, функции After, Sleep, Tick
- Количество дней между двумя датами в Golang
- Форматирование времени и даты в Golang
Комментариев нет:
Отправить комментарий