在Go 中解析Unix 時間戳
在Go 中解析Unix 時間戳可能看起來很簡單,但可能會導致意外錯誤。本文探討了一個常見問題並提供了解決方案。
問題陳述
考慮以下程式碼片段:
package main import "fmt" import "time" func main() { tm, err := time.Parse("1136239445", "1405544146") if err != nil{ panic(err) } fmt.Println(tm) }
目標是將 Unix 時間戳記「1405544146」轉換為 time.Time 物件。但是,執行此程式碼會導致錯誤:
panic: parsing time "1405544146" as "1136239445": cannot parse "1405544146" as "06:20:23.9445"
解決方案
time.Parse 函數旨在使用指定佈局解析時間字串。在這種情況下,佈局「1136239445」與 Unix 時間戳記的格式不符。要解析 Unix 時間戳,您需要使用整數表示。
您可以使用strconv.ParseInt 將字串解析為int64,而不是使用time.Parse,然後使用以下命令建立時間戳time.Unix:
package main import ( "fmt" "time" "strconv" ) func main() { i, err := strconv.ParseInt("1405544146", 10, 64) if err != nil { panic(err) } tm := time.Unix(i, 0) fmt.Println(tm) }
輸出:
2014-07-16 20:55:46 +0000 UTC
透過使用strconv.ParseInt,您可以避免與佈局相關的錯誤並成功解析 Unix 時間戳。
以上是如何在Go中正確解析Unix時間戳?的詳細內容。更多資訊請關注PHP中文網其他相關文章!