|
Go предоставляет обширную поддержку работы со временем
и продолжительностью; вот несколько примеров.
|
|
|
|

package main
|
|
|
import (
"fmt"
"time"
)
|
|
|
func main() {
p := fmt.Println
|
|
Начнём с получения текущего времени.
|
now := time.Now()
p(now)
|
|
Можно создать структуру time, указав год, месяц, день
и т.д. Время всегда связано с Location, т.е. часовым
поясом.
|
then := time.Date(
2009, 11, 17, 20, 34, 58, 651387237, time.UTC)
p(then)
|
|
Можно извлечь различные компоненты значения времени,
как и следовало ожидать.
|
p(then.Year())
p(then.Month())
p(then.Day())
p(then.Hour())
p(then.Minute())
p(then.Second())
p(then.Nanosecond())
p(then.Location())
|
|
Также доступен день недели Weekday (понедельник-воскресенье).
|
p(then.Weekday())
|
|
Эти методы сравнивают два момента времени, проверяя,
наступает ли первый до, после или одновременно
со вторым, соответственно.
|
p(then.Before(now))
p(then.After(now))
p(then.Equal(now))
|
|
Метод Sub возвращает Duration, представляющий
интервал между двумя моментами времени.
|
diff := now.Sub(then)
p(diff)
|
|
Можно вычислить длительность в различных единицах.
|
p(diff.Hours())
p(diff.Minutes())
p(diff.Seconds())
p(diff.Nanoseconds())
|
|
С помощью Add можно продвинуть время на заданную
продолжительность, или с - — переместить назад
на заданную продолжительность.
|
p(then.Add(diff))
p(then.Add(-diff))
}
|