首页  >  文章  >  后端开发  >  如何在 Go 中获取本地一天的开始?

如何在 Go 中获取本地一天的开始?

Patricia Arquette
Patricia Arquette原创
2024-11-11 02:47:03499浏览

 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