您可以
Time.Sub()用来获取2个
time.Time值之间的差,结果将是的值
time.Duration。
打印时,
time.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 UTC2009-11-10 23:05:41 +0000 UTC5m41s
如果要使用时间格式
HH:mm:ss,则可以构造一个
time.Time值并使用如下
Time.Format()方法:
out := time.Time{}.Add(diff)fmt.Println(out.Format("15:04:05"))
输出:
00:05:41
在Go Playground上尝试示例。
当然,这仅在时差少于一天的情况下有效。如果差异可能更大,那就另当别论了。结果必须包括几天,几个月和几年。复杂性显着增加。
此处提供的解决方案通过显示带有签名的函数来解决此问题:
func diff(a, b time.Time) (year, month, day, hour, min, sec int)
即使您的时间在24小时之内(在这种情况下
year,
month也
day将是
0),您也可以使用它。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)