繁体   English   中英

使用自定义布局解析

[英]time.Parse with custom layout

我想这个字符串模式解析"4-JAN-12 9:30:14"time.Time

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

我已经阅读了http://golang.org/pkg/time/#Parsehttps://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“

不知道您做错了什么(应该发布您的代码),但这实际上只是一个简单的函数调用:

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 {
    fmt.Println("Success:", t)
} else {
    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 {
    fmt.Println("Success:", t)
} else {
    fmt.Println("Failure:", err)
}

输出(在Go Playground上尝试):

Success: 2012-01-04 09:30:14 +0000 UTC

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM