IST ошибка часового пояса в пакете времени go golang - PullRequest
0 голосов
/ 24 июня 2019

Мне нужно преобразовать любой часовой пояс в формате RFC3339 в системное время в формате RFC3339. Но для нескольких часовых поясов, таких как IST, он выдает ошибку, а время все еще в UTC.Для преобразования какая функция сервиса как лучше?time.parse или time.In.

Я пытался преобразовать UTC в IST, но это не удалось.

package main

import (
    "fmt"
    "time"
)

func main() {

    //now time
    now := time.Now()
    fmt.Println("now ", now)
    zone, _ := now.Zone()
    fmt.Println("zone->", zone)

    ll, llerr := time.LoadLocation(zone)
    fmt.Println("Load Location", ll, llerr)
    // Convert the given time to system based time zone
    t, err := time.ParseInLocation(time.RFC3339, "2017-04-25T23:03:00Z", ll)
    fmt.Println("t - parsein", t)
    fmt.Println("err - parsein", err)
    //fmt.Println("t2 - parse", t.In(ll))

}

Ошибка: unknown time zone IST

Ожидается: необходимо преобразовать любой часовой пояс в системный часовой пояс.

1 Ответ

0 голосов
/ 24 июня 2019

Вы не можете загрузить индийский IST часовой пояс с этим именем, потому что имя «IST» неоднозначно.Это могут быть часовые пояса Индии, Ирландии, Израиля и т. Д., Которые имеют разные смещения и правила.Для получения дополнительной информации см. Почему time.Parse не использует часовой пояс?

Если IST является вашей локальной зоной, переменная time.Local будет обозначать этот часовой пояс.Если у вас есть time.Time, вы можете «переключиться» на другую зону, используя Time.In(), а также Time.Local() возвращает время в вашей локальной зоне.

Конечно, этот код "сломался бы" при запуске в другой зоне.Чтобы убедиться, что он везде работает одинаково, загрузите индийскую зону IST явно следующим образом:

loc, err := time.LoadLocation("Asia/Kolkata")
if err != nil {
    panic(err)
}

fmt.Println(time.Now())
fmt.Println(time.Now().In(loc))

На Go Playground будет выведено:

2009-11-10 23:00:00 +0000 UTC m=+0.000000001
2009-11-11 04:30:00 +0530 IST
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...