Метод time.Time.Zone

Метод Zone возвращает два значения: название временной зоны в виде строки и смещение в секундах относительно UTC. Первое возвращаемое значение — это сокращенное название зоны (например, "UTC", "MSK", "EST"), второе — смещение в секундах (положительное для восточных зон, отрицательное для западных). Метод вызывается на объекте time.Time и не принимает параметров.

Синтаксис

goname, offset := t.Zone()

Пример

Давайте получим информацию о временной зоне для текущего времени:

gopackage main

import (
  "fmt"
  "time"
)

func main() {
  now := time.Now()
  name, offset := now.Zone()
  fmt.Println("Zone name:", name)
  fmt.Println("Offset in seconds:", offset)
  fmt.Println("Offset in hours:", offset/3600)
}

Результат выполнения кода:

go"Zone name: MSK"
"Offset in seconds: 10800"
"Offset in hours: 3"

Пример

Проверим, как метод Zone работает с временем в зоне UTC:

gopackage main

import (
  "fmt"
  "time"
)

func main() {
  t := time.Date(2025, time.January, 15, 12, 0, 0, 0, time.UTC)
  name, offset := t.Zone()
  fmt.Println("Zone name:", name)
  fmt.Println("Offset:", offset)
}

Результат выполнения кода:

go"Zone name: UTC"
"Offset: 0"

Пример

Покажем, как метод Zone ведет себя при переводе времени на летнее время:

gopackage main

import (
  "fmt"
  "time"
)

func main() {
  loc, _ := time.LoadLocation("America/New_York")
  
  // Время в январе (зимнее время)
  jan := time.Date(2025, time.January, 15, 12, 0, 0, 0, loc)
  nameJan, offsetJan := jan.Zone()
  
  // Время в июле (летнее время)
  jul := time.Date(2025, time.July, 15, 12, 0, 0, 0, loc)
  nameJul, offsetJul := jul.Zone()
  
  fmt.Println("January zone:", nameJan, "offset:", offsetJan)
  fmt.Println("July zone:", nameJul, "offset:", offsetJul)
}

Результат выполнения кода:

go"January zone: EST offset: -18000"
"July zone: EDT offset: -14400"

Смотрите также

  • метод time.Time.Location,
    который возвращает объект временной зоны
  • метод time.Time.IsDST,
    который проверяет, действует ли летнее время
  • функцию time.LoadLocation,
    которая загружает временную зону по названию
  • метод time.Time.UTC,
    который преобразует время в UTC