Go в примери: Видът Time

Го предлага разширена поддръжка за работа с време и продължителност. Ето някои примери.

package main
import (
    "fmt"
    "time"
)
func main() {
    p := fmt.Println

Да видим как се взема текущото време.

    сега := time.Now()
    p(сега)

Можете да изградите структура за time като предоставите година, месец, ден и т.н. Времената са винаги свързнаи с място времева област Location.

    тогава := time.Date(
        2009, 11, 17, 20, 34, 58, 651387237, time.UTC)
    p(тогава)

Както бихте очаквали, можете да извлечете отделните части.

    p(тогава.Year())
    p(тогава.Month())
    p(тогава.Day())
    p(тогава.Hour())
    p(тогава.Minute())
    p(тогава.Second())
    p(тогава.Nanosecond())
    p(тогава.Location())

Дните от седмицата са също налични чрез метода Weekday.

    p(тогава.Weekday())

Тези методи сравняват две точки във времето, като проверяват дали първата се намира преди, след или в същото време с втората.

    p(тогава.Before(сега))
    p(тогава.After(сега))
    p(тогава.Equal(сега))

Методът Sub (от subtract изваждам) връща стойност от вид Duration (продължителност), представляваща разликата между две точки във времето.

    разлика := сега.Sub(тогава)
    p(разлика)

Можем да сметнем размера на продължителността в различни мерни единици.

    p(разлика.Hours())
    p(разлика.Minutes())
    p(разлика.Seconds())
    p(разлика.Nanoseconds())

Можем да използваме Add (добавям), за да отидем напред във времето с определена продължителност, или да добавим време с отрицателен знак, за да отидем назад.

    p(тогава.Add(разлика))
    p(тогава.Add(-разлика))
}
$ go run time.go 
2026-03-10 10:35:31.414579169 +0200 EET m=+0.000023752
2009-11-17 20:34:58.651387237 +0000 UTC
2009
November
17
20
34
58
651387237
UTC
Tuesday
true
false
false
142956h0m32.763191932s
142956.00910088664
8.5773605460532e+06
5.1464163276319194e+08
514641632763191932
2026-03-10 08:35:31.414579169 +0000 UTC
1993-07-28 08:34:25.888195305 +0000 UTC

Следващ пример: .