定位本地一天的開始
要檢索本地一天開始時間對象,常見的方法是提取年、月、日組件並重建日期。但是,標準函式庫是否提供了更正統的函數?
以下程式碼片段示範了執行此任務的自訂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中文網其他相關文章!