簡體   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