登录
首页 >  Golang >  Go问答

两个 time.Time 对象之间的差异

来源:Golang技术栈

时间:2023-04-12 09:52:17 425浏览 收藏

大家好,今天本人给大家带来文章《两个 time.Time 对象之间的差异》,文中内容主要涉及到golang,如果你对Golang方面的知识点感兴趣,那就请各位朋友继续看下去吧~希望能真正帮到你们,谢谢!

问题内容

对“Go”非常陌生。问题可能是基本问题。

我有两个 time.Time 对象,我想在小时/分钟/秒方面得到两者之间的差异。让我们说:

t1 = 2016-09-09 19:09:16 +0530 IST
t2 = 2016-09-09 19:09:16 +0530 IST

在上述情况下,因为差异为 0。它应该给我 00:00:00。考虑另一种情况:

t1 = 2016-09-14 14:12:48 +0530 IST
t2 = 2016-09-14 14:18:29 +0530 IST

在这种情况下,差异将是 00:05:41。我查看了https://godoc.org/time但无法从中做出任何事情。

正确答案

您可以使用来获取 2 个值Time.Sub()之间的差异,结果将是.time.Timetime.Duration

打印时, atime.Duration会“智能地”格式化自身:

t1 := time.Now()
t2 := t1.Add(time.Second * 341)

fmt.Println(t1)
fmt.Println(t2)

diff := t2.Sub(t1)
fmt.Println(diff)

输出:

2009-11-10 23:00:00 +0000 UTC
2009-11-10 23:05:41 +0000 UTC
5m41s

如果你想要时间格式HH:mm:ss,你可以构造一个time.Time值并使用它的Time.Format()方法,如下所示:

out := time.Time{}.Add(diff)
fmt.Println(out.Format("15:04:05"))

输出:

00:05:41

试试Go Playground上的示例。

当然,这只有在时差小于一天的情况下才有效。如果差异可能更大,那就是另一回事了。结果必须包括天、月和年。复杂性显着增加。有关详细信息,请参阅此问题:

[golang time.Since() 有几个月和几年](https://stackoverflow.com/questions/36530251/golang-time-since-with- months-and-years/36531443#36531443)

那里提出的解决方案通过显示一个带有签名的函数来解决这个问题:

func diff(a, b time.Time) (year, month, day, hour, min, sec int)

即使您的时间在 24 小时内,您也可以使用它(在这种情况下yearmonth并且day将是0)。

文中关于golang的知识介绍,希望对你的学习有所帮助!若是受益匪浅,那就动动鼠标收藏这篇《两个 time.Time 对象之间的差异》文章吧,也可关注golang学习网公众号了解相关技术文章。

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