gpt4 book ai didi

datetime - 在 Playground 上工作时,Golang 时间解析无法正常工作

转载 作者:数据小太阳 更新时间:2023-10-29 03:24:54 36 4
gpt4 key购买 nike

我需要解析由使用 Unix() 函数的伪随机日期时间生成器生成的日期时间字符串。生成的日期时间采用 2010 年到 2017 年之间的各种日期和时间对。问题来了,这个版本的代码在我的电脑和 playground 上都能运行,

package main

import (
"fmt"
"time"
)

func main() {
a := time.Date(2016, 1, 0, 0, 0, 0, 0, time.UTC).Unix()
kk := time.Unix(a, 0)
t, err := time.Parse("2006-01-02 15:04:05.999999999 -0700 MST", kk.String())
if err != nil {
panic(err)
}
fmt.Println(t)
}

但是下面的版本在 playground 上可以运行,但在我的电脑上会出现 panics,

package main

import (
"fmt"
"time"
)

func main() {
a := time.Date(2018, 1, 0, 0, 0, 0, 0, time.UTC).Unix()
kk := time.Unix(a, 0)
t, err := time.Parse("2006-01-02 15:04:05.999999999 -0700 MST", kk.String())
if err != nil {
panic(err)
}
fmt.Println(t)
}

这是错误,

panic: parsing time "2017-12-31 03:00:00 +0300 +03" as "2006-01-02 15:04:05.999999999 -0700 MST": cannot parse "+03" as "MST"

我使用的Go版本是go1.8.3 darwin/amd64

有什么想法吗?

最佳答案

这里的问题与 Europe/Istanbul 的缩写更改有关。

Turkey switched from EET/EEST (+02/+03) to permanent +03, effective 2016-09-07. (Thanks to Burak AYDIN.) Use "+03" rather than an invented abbreviation for the new time.

时间包目前不接受 +03 作为 EET/EEST,当使用包含 +03 作为时区的日期时间字符串以 2006-01-02 的形式解析时会出现此问题15:04:05.999999999 -0700 MST

关于datetime - 在 Playground 上工作时,Golang 时间解析无法正常工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44781327/

36 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com