構造 time.Time 和時區偏移
在計時領域,對於複雜的應用程式準確處理時區至關重要。這涉及到建構包含特定時區偏移量的 time.Time 實例。
讓我們以Apache 日誌條目為例:
[07/Mar/2004:16:47:46 -0800]
成功解析各個組件(年、月、日)後、小時、分鐘、秒和時區),下一步是構造一個包含「-0800」時區的time.Time 實例offset.
使用time.FixedZone()
為此目的,您可以使用 time.FixedZone()。此函數可讓您建構具有固定偏移量的 time.Location。這是一個示例:
loc := time.FixedZone("myzone", -8*3600) nativeDate := time.Date(2019, 2, 6, 0, 0, 0, 0, loc) fmt.Println(nativeDate)
輸出:
2019-02-06 00:00:00 -0800 myzone
使用time.Parse()
如果時區偏移量以字串形式提供,您可以使用time.Parse() 來解釋它。使用僅包含參考區域偏移量的佈局字串:
t, err := time.Parse("-0700", "-0800") fmt.Println(t, err)
輸出:
0000-01-01 00:00:00 -0800 -0800 <nil>
從輸出可以看出,產生的time. Time 有區域偏移量為-0800 小時。
完成示例
結合上述技術,原始示例可以重寫如下:
t, err := time.Parse("-0700", "-0800") if err != nil { panic(err) } nativeDate := time.Date(2019, 2, 6, 0, 0, 0, 0, t.Location()) fmt.Println(nativeDate)
輸出:
2019-02-06 00:00:00 -0800 -0800
以上是如何在 Go 中建構具有特定時區偏移的 time.Time 實例?的詳細內容。更多資訊請關注PHP中文網其他相關文章!