Это может быть следствием того факта, что ваш год для 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.