如何在 Go 中解析非标准日期/时间字符串。例如,如果我想将字符串 10/15/1983
转换为 time.Time
? time.Parse()
函数应该允许您指定一种格式。
http://play.golang.org/p/v5DbowXt1x
package main
import "fmt"
import "time"
func main() {
test, err := time.Parse("10/15/1983", "10/15/1983")
if err != nil {
panic(err)
}
fmt.Println(test)
}
这会导致恐慌。
panic: parsing time "10/15/1983" as "10/15/1983": cannot parse "" as "0/"
从逻辑上讲,这是有道理的,因为它应该如何知道哪天和哪月。
其他语言有类似下面的功能:
parse("mm/dd/yyyy", "10/15/1983")
我在 Go 文档中找不到这样的函数,我唯一的选择是正则表达式吗?
原文由 Nucleon 发布,翻译遵循 CC BY-SA 4.0 许可协议
time.Parse 正在寻找一些关键值。
通过改变:
至
解析器会识别它。
这 是操场上修改后的代码。
您可以利用 src/pkg/time/format.go 文件中的常量列表来创建您自己的解析格式。
因此,无论何时您的格式指定年份,都应使用“06”或“2006”完成,秒由“05”或“5”指定,时区指定为“MST”、“Z0700”、“Z07:00” “、”-0700”、”-07” 或 “-07:00”。如果您引用常量列表,您可能会把您需要解析的任何标准格式放在一起。
例如,如果您想要解析 通用日志格式(Apache 用于其日志文件的格式)中的日期/时间,您可以通过将以下字符串作为 布局 参数传递给
time.Parse()
来实现。“02”表示月份中的日期字段,“Jan”表示月份名称字段,“2006”表示年份字段,“15”表示 24 小时格式的小时字段,“04”表示分钟字段, “05”表示秒字段,“-0700”表示时区字段。
该格式将解析当前 PST 时间:
31/Dec/2012:15:32:25 -0800
所以
time.Parse()
调用看起来像这样: