如何直接用时区解析日期和时间

问题描述 投票:0回答:1

我有这些代码:

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完全可行吗?

date go time timezone
1个回答
2
投票

您永远不会拥有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

© www.soinside.com 2019 - 2024. All rights reserved.