time.Parse 自定义布局

我正在尝试将此字符串模式解析"4-JAN-12 9:30:14"为time.Time.


尝试过time.Parse("2-JAN-06 15:04:05", inputString)和许多其他人,但无法使其正常工作。


我已经阅读了http://golang.org/pkg/time/#Parse和https://gobyexample.com/time-formatting-parsing但似乎没有任何这样的例子。


谢谢!


编辑:完整代码:


type CustomTime time.Time


func (t *CustomTime) UnmarshalJSON(b []byte) error {

    auxTime, err := time.Parse("2-JAN-06 15:04:05", string(b))

    *t = CustomTime(auxTime)

    return err

}

解析时间 ""10-JAN-12 11:20:41"" 为 "2-JAN-06 15:04:05":无法将 ""24-JAN-15 10:27:44"" 解析为 "2"


慕妹3242003
浏览 175回答 1
1回答

慕仙森

不知道你做错了什么(应该发布你的代码),但这实际上只是一个简单的函数调用:s := "4-JAN-12 9:30:14"t, err := time.Parse("2-JAN-06 15:04:05", s)fmt.Println(t, err)输出:2012-01-04 09:30:14 +0000 UTC <nil>在Go Playground上试一试。请注意,time.Parse()返回 2 个值:解析time.Time值(如果解析成功)和可选error值(如果解析失败)。请参阅以下示例,其中我故意指定了错误的输入字符串:s := "34-JAN-12 9:30:14"if t, err := time.Parse("2-JAN-06 15:04:05", s); err == nil {&nbsp; &nbsp; fmt.Println("Success:", t)} else {&nbsp; &nbsp; fmt.Println("Failure:", err)}输出:Failure: parsing time "34-JAN-12 9:30:14": day out of range在Go Playground上试一试。编辑:现在您发布了代码和错误消息,您的问题是您的输入字符串包含前导和尾随引号!删除前导和尾随引号,它将起作用。这是你的情况:s := `"4-JAN-12 9:30:14"`s = s[1 : len(s)-1]if t, err := time.Parse("2-JAN-06 15:04:05", s); err == nil {&nbsp; &nbsp; fmt.Println("Success:", t)} else {&nbsp; &nbsp; fmt.Println("Failure:", err)}输出(在Go Playground上试试):Success: 2012-01-04 09:30:14 +0000 UTC
打开App,查看更多内容
随时随地看视频慕课网APP