Работать с часовыми поясами довольно сложно. Хороший способ справиться с разницей между поясами — выделить в системе одну зону в качестве референтной и в случае необходимости конвертировать другие значения в данный часовой пояс. В данной инструкции будет показано, как конвертиртировать значение одного часового пояса в другой.
Как конвертировать один часовой пояс в другой в Golang?
1. Создайте файл timezones.go
со следующим содержимым:
Рекомендуем вам супер TELEGRAM канал по Golang где собраны все материалы для качественного изучения языка. Удивите всех своими знаниями на собеседовании! 😎
Мы публикуем в паблике ВК и Telegram качественные обучающие материалы для быстрого изучения Go. Подпишитесь на нас в ВК и в Telegram. Поддержите сообщество Go программистов.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 |
package main import ( "fmt" "time" ) func main() { eur, err := time.LoadLocation("Europe/Vienna") if err != nil { panic(err) } t := time.Date(2000, 1, 1, 0, 0, 0, 0, eur) fmt.Printf("Оригинальное время: %v\n", t) phx, err := time.LoadLocation("America/Phoenix") if err != nil { panic(err) } t2 := t.In(phx) fmt.Printf("Конвертированное время: %v\n", t2) } |
2. Запустите код через go run timezones.go
;
3. Посмотрите на результат в терминале:
1 2 |
Оригинальное время: 2000-01-01 00:00:00 +0100 CET Конвертированное время: 1999-12-31 16:00:00 -0700 MST |
Тип Time
предоставляет метод In
, что использует указатель для time.Location
. Возвращаемый Time
является конвертированным оригинальным значением данного часового пояса. Обратите внимание, что экземпляр Time
считается неизменяемым, поэтому методы в результате изменения создают новый экземпляр Time
.
На заметку: Пакет
time
обращается к базе данных IANA Time Zone как к источнику локаций. ФункцияLoadLocation
ищет директорию или файл ZIP из переменной средыZONEINFO
. Если ничего не найдено, обыскиваются известные локации инсталяции на системах UNIX. В конечном итоге идет поиск по$GOROOT/lib/time/zoneinfo.zip
.
Администрирую данный сайт с целью распространения как можно большего объема обучающего материала для языка программирования Go. В IT с 2008 года, с тех пор изучаю и применяю интересующие меня технологии. Проявляю огромный интерес к машинному обучению и анализу данных.
E-mail: vasile.buldumac@ati.utm.md
Образование
Технический Университет Молдовы (utm.md), Факультет Вычислительной Техники, Информатики и Микроэлектроники
- 2014 — 2018 Universitatea Tehnică a Moldovei, ИТ-Инженер. Тема дипломной работы «Автоматизация покупки и продажи криптовалюты используя технический анализ»
- 2018 — 2020 Universitatea Tehnică a Moldovei, Магистр, Магистерская диссертация «Идентификация человека в киберпространстве по фотографии лица»