首頁  >  文章  >  後端開發  >  如何在 Go 中獲取本地一天的開始?

如何在 Go 中獲取本地一天的開始?

Patricia Arquette
Patricia Arquette原創
2024-11-11 02:47:03527瀏覽

 How to Get the Local Start of Day in Go?

定位本地一天的開始

要檢索本地一天開始時間對象,常見的方法是提取年、月、日組件並重建日期。但是,標準函式庫是否提供了更正統的函數?

以下程式碼片段示範了執行此任務的自訂Bod 函數:

func Bod(t time.Time) time.Time {
    year, month, day := t.Date()
    return time.Date(year, month, day, 0, 0, 0, 0, t.Location())
}

雖然Bod 函數正確確定了本地從今天開始,建議作為替代方案的Truncate 函數提供了不同的結果。要仔細檢查這一點,請考慮以下程式碼:

chicago, err := time.LoadLocation("America/Chicago")
if err != nil {
    fmt.Println(err)
    return
}
now := time.Now().In(chicago)
fmt.Println(Bod(now))
fmt.Println(Truncate(now))

此程式碼產生以下輸出:

2014-08-11 00:00:00 -0400 EDT
2014-08-11 20:00:00 -0400 EDT

很明顯,Truncate 方法在UTC 時間上運行,而Bod 函數在UTC 時間上運行保持當地時間(芝加哥)。此外,Truncate 假定一天 24 小時不變,這對於像芝加哥這樣經歷夏令時間變化的地區來說是不準確的。

以上是如何在 Go 中獲取本地一天的開始?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

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