gpt4 book ai didi

go - 将时间戳从一种有效的RFC3339格式转换为Go中的另一种格式

转载 作者:行者123 更新时间:2023-12-01 22:40:41 26 4
gpt4 key购买 nike

我有这种格式的2020-01-17T14:41:56.393+0530时间戳字符串,我希望将它们转换成这种格式的2019-01-18T04:32:03Z
该godoc上的time.Parse方法documentation表示它们都是有效的RFC3339格式,但是如何将它们从此格式转换为Z格式呢?

实际上我想做的就是找出此格式2020-01-17T14:41:56.393+0530中的某个时间戳是否位于z格式2019-01-18T04:32:03Z中两个时间戳的范围内

最佳答案

都是有效的RFC3339格式

该时间包将RFC3339定义为:
RFC3339 = "2006-01-02T15:04:05Z07:00"
因此2020-01-17T14:41:56.393+0530无效(时区中没有冒号)。请参阅this issue以获取有关Go对此的处理是否符合RFC的讨论。

将它们从此形式转换为Z形式

您不需要-一旦转换为time.Time,程序包就会为您处理时区。例如:

checkTime, err := time.Parse("2006-01-02T15:04:05Z0700", "2020-01-17T14:41:56.393+0530")
if err != nil {
panic(err)
}
startRange, err := time.Parse(time.RFC3339, "2020-01-18T02:32:03Z")
if err != nil {
panic(err)
}
endRange, err := time.Parse(time.RFC3339, "2020-01-18T04:32:03Z")
if err != nil {
panic(err)
}

fmt.Printf("check: %v start: %v end: %v", checkTime, startRange, endRange)
if !startRange.After(checkTime) && !endRange.Before(checkTime) {
fmt.Println("Check 1 in range")
}

checkTime, err = time.Parse(time.RFC3339, "2020-01-18T09:41:56.393+05:30")
if err != nil {
panic(err)
}
if !startRange.After(checkTime) && !endRange.Before(checkTime) {
fmt.Println("Check 2 in range")
}

fmt.Printf("check: %v start: %v end: %v", checkTime.Local(), startRange.Local(), endRange.Local())

关于go - 将时间戳从一种有效的RFC3339格式转换为Go中的另一种格式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60064357/

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