问题的标题和正文都要求“今天开始是当地的(芝加哥)”。问题中的
Bod函数正确地做到了这一点。接受
Truncate功能的权利要求是更好的解决方案,但它返回一个不同的结果; 它不会在今天开始返回本地[芝加哥]。例如,
package mainimport ( "fmt" "time")func Bod(t time.Time) time.Time { year, month, day := t.Date() return time.Date(year, month, day, 0, 0, 0, 0, t.Location())}func Truncate(t time.Time) time.Time { return t.Truncate(24 * time.Hour)}func main() { 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 EDT2014-08-11 20:00:00 -0400 EDT
该
time.Truncate方法将截断UTC时间。
在接受
Truncate功能还假设有一天24小时。芝加哥每天有23、24或25个小时。



