首頁 >後端開發 >Golang >如何在Go中正確解析Unix時間戳?

如何在Go中正確解析Unix時間戳?

Barbara Streisand
Barbara Streisand原創
2024-12-18 21:20:15454瀏覽

How Can I Correctly Parse Unix Timestamps in Go?

在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中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn