62 lines
1.9 KiB
Go
62 lines
1.9 KiB
Go
// Go предлагает обширную поддержку для времени и
|
||
// продолжительности; вот несколько примеров.
|
||
|
||
package main
|
||
|
||
import (
|
||
"fmt"
|
||
"time"
|
||
)
|
||
|
||
func main() {
|
||
p := fmt.Println
|
||
|
||
// Начнем с получения текущего времени
|
||
now := time.Now()
|
||
p(now)
|
||
|
||
// Вы можете построить структуру `time`, указав год,
|
||
// месяц, день и т.д. Время всегда связано с `местоположением`,
|
||
// т.е. часовым поясом.
|
||
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))
|
||
}
|