Вы можете использовать time.FixedZone()
для построения time.Location
с фиксированным смещением.
Пример:
loc := time.FixedZone("myzone", -8*3600)
nativeDate := time.Date(2019, 2, 6, 0, 0, 0, 0, loc)
fmt.Println(nativeDate)
Выход(попробуйте на Go Playground ):
2019-02-06 00:00:00 -0800 myzone
Если у вас есть смещение зоны в виде строки, вы можете использовать time.Parse()
для ее анализа.Используйте строку макета, который содержит только опорную зону смещения:
t, err := time.Parse("-0700", "-0800")
fmt.Println(t, err)
Эти выходы (попробуйте его на Go Playground ):
1026
Как вы можетевидите, результат time.Time
имеет смещение зоны -0800 часов.
Таким образом, наш оригинальный пример также может быть записан как:
t, err := time.Parse("-0700", "-0800")
if err != nil {
panic(err)
}
nativeDate := time.Date(2019, 2, 6, 0, 0, 0, 0, t.Location())
fmt.Println(nativeDate)
Вывод (попробуйтеэто на Go Playground ):
2019-02-06 00:00:00 -0800 -0800