登录
首页 >  Golang >  Go问答

查找早期时间除以秒/分钟/每小时

来源:stackoverflow

时间:2024-04-08 09:33:37 180浏览 收藏

欢迎各位小伙伴来到golang学习网,相聚于此都是缘哈哈哈!今天我给大家带来《查找早期时间除以秒/分钟/每小时》,这篇文章主要讲到等等知识,如果你对Golang相关的知识非常感兴趣或者正在自学,都可以关注我,我会持续更新相关文章!当然,有什么建议也欢迎在评论留言提出!一起学习!

问题内容

我的时间除以 240m 或 4 小时。如何从随机时间或 time.now() 获得从 00:00 开始的早时间除以 4 小时?

  • 02.35.00 将变为 00.00.00
  • 23.59.59 将变为 20.00.00

其他示例。除以 50 分钟:

  • 00.50.00 将变为 00.50.00
  • 00.49.59 将变为 00.00.00
  • 01.50 将会是 01.40.00...
  • 59 年 59 月 23 日将变为 00 年 20 月 23 日

分隔符可以从 1 秒开始到 23h59m。

我已经采用了其他方法,例如 https://play.golang.org/p/oJn09DCWqjF 但如果我想使用 2/ 中的分隔符,可能会浪费大切片的内存并降低性能4秒。因为我想要实验没有计时器的过期缓存。谢谢。


解决方案


time.Time.Truncate 基本上就是你想要的。

不过,当时间带有日期时,这有点棘手,因为并非所有持续时间都可以整除 24 小时(例如 50 分钟)。您需要删除日期并将其添加回来。

func truncate(t time.Time, d time.Duration) time.Time {
    yy, mm, dd := t.Date()
    t = t.AddDate(-yy, -int(mm), -dd)
    t = t.Truncate(d)
    t = t.AddDate(yy, int(mm), dd)
    return t
}

演示:https://play.golang.org/p/fFAqh_0Wkdp

请注意演示有固定的时间。

以上就是本文的全部内容了,是否有顺利帮助你解决问题?若是能给你带来学习上的帮助,请大家多多支持golang学习网!更多关于Golang的相关知识,也可关注golang学习网公众号。

声明:本文转载于:stackoverflow 如有侵犯,请联系study_golang@163.com删除
相关阅读
更多>
最新阅读
更多>
课程推荐
更多>