gpt4 book ai didi

parsing - Go: time.Parse() 问题

转载 作者:IT王子 更新时间:2023-10-29 01:36:30 28 4
gpt4 key购买 nike

我有以下代码:

timeLocal := "01/July/2015:18:12:25 +0900"
inFormat := "02/January/2006:15:04:05 -0700"
parsed, err := time.Parse(inFormat, timeLocal)
if err != nil {
log.Fatal("Time format was not recognized!")
}

现在,解析工作正常。但是当我运行时:

fmt.Println(timeLocal)
fmt.Println(inFormat)
fmt.Println(parsed)

输出是:

01/July/2015:18:12:25 +0900
02/January/2006:15:04:05 -0700
2015-07-01 18:12:25 +0900 +0900

第二个 +0900 应该在那里吗?我在做什么蠢事?抱歉,这真是漫长的一天,我看不出我错过了什么。

哦,整个文件在这里:

package main

import (
"fmt"
"time"
"log"
)

func main() {
timeLocal := "01/July/2015:18:12:25 +0900"
inFormat := "02/January/2006:15:04:05 -0700"
parsed, err := time.Parse(inFormat, timeLocal)
if err != nil {
log.Fatal("Time format was not recognized!")
}

fmt.Println(timeLocal)
fmt.Println(inFormat)
fmt.Println(parsed)
}

最佳答案

如果您查看 time.Time 的文档你会看到默认的输出格式是什么:

String returns the time formatted using the format string:

"2006-01-02 15:04:05.999999999 -0700 MST"

现在您应该看到第二个 +0900 在那里做什么——这是一个位置(时区)名称。由于您的输入格式没有名称,因此它只会重复一个偏移量。

您可以通过更改输入格式来解析位置名称来提供名称。或者,如果不需要,您可以提供不打印名称的输出格式。

你修改的例子:

package main

import (
"fmt"
"time"
"log"
)

func main() {
timeLocal := "01/July/2015:18:12:25 +0900 XYZ"
inFormat := "02/January/2006:15:04:05 -0700 MST"
parsed, err := time.Parse(inFormat, timeLocal)
if err != nil {
log.Fatal("Time format was not recognized!")
}

fmt.Println(timeLocal)
fmt.Println(inFormat)
fmt.Println(parsed) // 2015-07-01 18:12:25 +0900 XYZ
fmt.Println(parsed.Format("02/January/2006:15:04:05 -0700"))
}

http://play.golang.org/p/xVGvlt-M5B

关于parsing - Go: time.Parse() 问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31165516/

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