Как я могу разобрать дату и время напрямую с часовым поясом - PullRequest
0 голосов
/ 20 марта 2020

У меня есть эти коды:

package main

import (
    "fmt"
    "time"
)

func main() {
    tzJakarta, _ := time.LoadLocation("Asia/Jakarta")
    stringTime := fmt.Sprintf("05-05-2019 05:11 %s", tzJakarta) 
    parsedTime, _ := time.Parse("02-01-2006 15:04 MST", stringTime)

    fmt.Println(tzJakarta)
    fmt.Println(stringTime)
    fmt.Println(parsedTime)
}

Вывод:

Asia/Jakarta
05-05-2019 05:11 Asia/Jakarta
0001-01-01 00:00:00 +0000 UTC

Что я ожидаю, это:

Asia/Jakarta
05-05-2019 05:11 Asia/Jakarta
0001-01-01 00:00:00 +0700 UTC

Как мне этого добиться ? Возможно ли это вообще с Go?

1 Ответ

4 голосов
/ 20 марта 2020

У вас никогда не будет 0001-01-01 00:00:00 +0700 UTC, потому что вы игнорируете ошибки, 0001-01-01 00:00:00 +0000 UTC - это нулевое значение. Последнее утверждение возвращает ошибку о разборе, вот правильная версия.

package main

import (
    "fmt"
    "time"
)

func main() {
    loc, _ := time.LoadLocation("Asia/Jakarta")

    // Note: without explicit zone, returns time in given location.
    const shortForm = "02-01-2006 15:04"
    t, _ := time.ParseInLocation(shortForm, "05-05-2019 05:11", loc)
    fmt.Println(t)

}

Вывод:

2019-05-05 05:11:00 +0700 WIB 

(WIB - западно-индонезийское время)

Platground

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