суббота, 25 июля 2020 г.

Пакет time в Golang, тип Location

Location отображает моменты времени в зону, используемую в этом времени. Как правило, Location представляет собой набор смещений времени, используемых в географической области. Для многих мест смещение времени зависит от того, используется ли летнее время в данный момент времени.

type Location struct {
    // содержит отфильтрованные или неэкспортированные поля
}

Local представляет местный часовой пояс системы. В системах Unix Local обращается к переменной окружения TZ, чтобы найти часовой пояс для использования. Отсутствие TZ означает использование системного значения по умолчанию /etc/localtime. TZ="" означает использовать UTC. TZ="foo" означает использовать файл foo в системном каталоге часовых поясов.

var Local *Location = &localLoc

UTC представляет собой всемирное координированное время (UTC, Universal Coordinated Time).

var UTC *Location = &utcLoc

Пример использования Location

package main

import (
    "fmt"
    "time"
)

func main() {
    // В Китае нет летнего времени. 
    // Китай использует 
    // фиксированное 8-часовое смещение от UTC.
    secondsEastOfUTC := int((8 * time.Hour).Seconds())
    beijing := time.FixedZone("Beijing Time", 
                              secondsEastOfUTC)

    // Если в системе есть база данных часовых поясов, 
    // можно загрузить местоположение из нее, например:
    // newYork, err := time.LoadLocation("America/New_York")

    // Создание времени требует местоположения (location). 
    // Распространенными местоположениями 
    // являются time.Local и time.UTC.
    timeInUTC := time.Date(2009, 1, 1, 12, 0, 0, 0, 
                           time.UTC)
    sameTimeInBeijing := time.Date(2009, 1, 1, 20, 0, 0, 0, 
                                   beijing)

    // Хотя время по UTC составляет 1200, 
    // а время по Пекину - 2000, 
    // Пекин на 8 часов вперед, 
    // поэтому две даты фактически представляют 
    // один и тот же момент.
    timesAreEqual := timeInUTC.Equal(sameTimeInBeijing)
    fmt.Println(timesAreEqual) 
    // печатает true
}


Читайте также:


Комментариев нет:

Отправить комментарий