登录
首页 >  Golang >  Go问答

提取时间作为仅限于持续时间的方法

来源:stackoverflow

时间:2024-02-08 14:45:19 489浏览 收藏

在Golang实战开发的过程中,我们经常会遇到一些这样那样的问题,然后要卡好半天,等问题解决了才发现原来一些细节知识点还是没有掌握好。今天golang学习网就整理分享《提取时间作为仅限于持续时间的方法》,聊聊,希望可以帮助到正在努力赚钱的你。

问题内容

我正在寻找一种从 time.time 中提取时间作为 time.duration 的方法。

例如, "2022-11-25 10:07:40.1242844 +0900 jst"(时间.时间) 到 "10h7m40s"(时间.持续时间)

func main() {
   currentTime := time.Now()
   d, err := time.ParseDuration(currentTime.Format("15h04m05s"))
   if err != nil {
      fmt.Println(err)
   }
   fmt.Print(d.String())
// 9h57m54s
}

这段代码可以工作,但它一次将时间转换为字符串,然后转换为持续时间, 我认为这是迂回的,我不喜欢它。 有更好的方法来编写这段代码吗?


正确答案


另一个解决方案是将当前时间截断为一天的开始,然后使用 time.since() 返回 duration

import (
  "fmt"
  "time"
)

func main() {
  now := time.Now()
  today := time.Date(now.Year(), now.Month(), now.Day(), 0, 0, 0, 0, now.Location())

  fmt.Println(time.Since(today))
}

今天关于《提取时间作为仅限于持续时间的方法》的内容就介绍到这里了,是不是学起来一目了然!想要了解更多关于的内容请关注golang学习网公众号!

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