Почему в ParseInLocation печатается другой часовой пояс? - PullRequest
0 голосов
/ 29 октября 2018

Я пытаюсь проанализировать строку во времени с указанием местоположения пользователя в часовом поясе -

// error handling skipped for brevity
loc, _ := time.LoadLocation("Asia/Kolkata")
now, _ := time.ParseInLocation("15:04", "10:10", loc)
fmt.Println("Location : ", loc, " Time : ", now)

В моей системе выводится - Location : Asia/Kolkata Time : 0000-01-01 10:10:00 +0553 HMT

Откуда появился этот HMT часовой пояс?

Если вместо синтаксического анализа времени я использую now := time.Now().In(loc), напечатанный часовой пояс будет правильным - IST. Я что-то не так делаю с парсингом часовых поясов или системная база данных часовых поясов неисправна?

1 Ответ

0 голосов
/ 29 октября 2018

Это может быть следствием того факта, что ваш год для now равен 0000, а time.Now() возвращает текущее время. Часовые пояса странные, и некоторые места не всегда используют один и тот же часовой пояс. Это отрывок из базы данных часовых поясов IANA :

# Zone  NAME        GMTOFF  RULES   FORMAT  [UNTIL]
Zone    Asia/Kolkata    5:53:28 -   LMT 1854 Jun 28 # Kolkata
        5:53:20 -   HMT 1870        # Howrah Mean Time?
        5:21:10 -   MMT 1906 Jan  1 # Madras local time
        5:30    -   IST 1941 Oct
        5:30    1:00    +0630   1942 May 15
        5:30    -   IST 1942 Sep
        5:30    1:00    +0630   1945 Oct 15
        5:30    -   IST

Если я правильно истолковываю это, кажется, что HMT использовался с 1854 по 1870 год - я не совсем уверен, почему это приведет к тому, что он будет использоваться в течение года 0000, который, казалось бы, подпадает под LMT, но возможно База данных Go немного отличается (или, возможно, я неправильно интерпретирую базу данных). Если вы беспокоитесь о правильном использовании часового пояса для исторических дат (например, 0000), я не уверен, что смогу дать отличный ответ, однако для всего, что нужно, следует правильно использовать недавний IST.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...