Час|Time
#
// Go має об'ємну підтримку часових значень
// та значень тривалості. Давайте розглянемо
// наступні приклади.
package main
import (
"fmt"
"time"
)
func main() {
p := fmt.Println
// Розпочнемо з отримання поточного часу.
now := time.Now()
p(now)
// Ми можемо створювати структуру часу, задаючи значення
// для року, місяця, дня і так далі. Час завжди асоційований
// з _Розташуванням_, інакше кажучи, з часовою зоною.
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())
// Окрему зручність ми отримуємо від виділеного
// методу що повертає - день тижня.
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))
}
$ go run time.go
2018-03-26 11:17:26.489645943 +0300 EEST m=+0.000299106
2009-11-17 20:34:58.651387237 +0000 UTC
2009
November
17
20
34
58
651387237
UTC
Tuesday
true
false
false
73211h42m27.838258706s
73211.70773284964
4.392702463970979e+06
2.635621478382587e+08
263562147838258706
2018-03-26 08:17:26.489645943 +0000 UTC
2001-07-12 08:52:30.813128531 +0000 UTC
# Далі - ми розглянемо споріднену тему - час відносний
# до епох Unix.