Метод time.Time.Zone
Метод Zone возвращает два значения: название временной зоны в виде строки и смещение в секундах относительно UTC. Первое возвращаемое значение — это сокращенное название зоны (например, "UTC", "MSK", "EST"), второе — смещение в секундах (положительное для восточных зон, отрицательное для западных). Метод вызывается на объекте time.Time и не принимает параметров.
Синтаксис
name, offset := t.Zone()
Пример
Давайте получим информацию о временной зоне для текущего времени:
package 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)
}
Результат выполнения кода:
"Zone name: MSK"
"Offset in seconds: 10800"
"Offset in hours: 3"
Пример
Проверим, как метод Zone работает с временем в зоне UTC:
package 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)
}
Результат выполнения кода:
"Zone name: UTC"
"Offset: 0"
Пример
Покажем, как метод Zone ведет себя при переводе времени на летнее время:
package 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)
}
Результат выполнения кода:
"January zone: EST offset: -18000"
"July zone: EDT offset: -14400"
Смотрите также
-
метод
time.Time.Location,
который возвращает объект временной зоны -
метод
time.Time.IsDST,
который проверяет, действует ли летнее время -
функцию
time.LoadLocation,
которая загружает временную зону по названию -
метод
time.Time.UTC,
который преобразует время в UTC