获取两个日期之间的持续时间或基本上根据当前日期获取未来日期的惯用方式是什么。 现在,我正在使用下面的代码来实现这一目标。

yearSpan := time.Date(time.Now().Year()-1, time.Now().Month(), 
time.Now().Day(), time.Now().Hour(), time.Now().Minute(), time.Now().Second(), 
time.Now().Nanosecond(), time.UTC)

yearDuration := time.Now().Sub(yearSpan)

header.Add("Expires", time.Now().Add(futureDate).String())

我几乎在书籍和网站中到处都看过,但是找不到任何惯用的方式来创建持续时间。 关于如何以更好的方式重构以上代码的任何想法?

谢谢

===============>>#1 票数:1 已采纳

time.Duration定义为type Duration int64 ,因此从根本type Duration int64 ,您只需进行基本数学运算即可获得所需的持续时间。

例如( Play with it ):

package main

import (
    "fmt"
    "time"
)

const avgYear = time.Hour * 24 * 365

func main() {
    fmt.Println("Hello, playground")
    fmt.Println("Now", time.Now().String())
    fmt.Println("Last Year", time.Now().Add(-avgYear).String())
    fmt.Println("Next Year", time.Now().Add(avgYear).String())
}

  ask by ymg translate from so

未解决问题?本站智能推荐:

1回复

将持续时间乘以持续时间是什么意思?

令我惊讶的是,这个编译 结果是无稽之谈 将持续时间乘以持续时间并获得另一个持续时间是没有任何意义的。 这是怎么回事?
1回复

以分钟为单位截断持续时间

我想通过使用Go中的time库的Truncate函数从orderDeliveryStartTime减去30分钟。 而是减去30秒。 如何从time.Time精确减去30分钟? 实际结果: 18000亿 2019-04-11 13:00:30 2019-04-
1回复

如何格式化持续时间

我有以下代码,因为我使用gin框架和filewalk,所以无法在运行中运行。 我想要做的是基于filext als过滤器和modtime作为排序标准的文件排序输出。 我能够满足大部分请求,但是输出看起来很丑,如下所示。 我已经使用https://github.com/davi
2回复

以不同的持续时间重复倒数

我想用2个不同的持续时间制作倒计时股票。 做这个的最好方式是什么? 我尝试这样做: 但是我需要在不同的时间间隔内进行置顶 哪种惯用的方法可以做到这一点?
2回复

如何不舍入持续时间

我正在尝试计时一个进程的执行时间,我需要以秒为单位的值。 我正在寻找一种不浪费时间的方法。 这是操场: https : //play.golang.org/p/VLgKTpmkHPS
5回复

如何将持续时间乘以整数?

为了测试并发goroutine,我在函数中添加了一行,使其需要一段随机时间返回(最多一秒) 但是当我编译时,我收到了这个错误 。\\ crawler.go:49:无效操作:rand.Int31n(1000)* time.Millisecond(不匹配类型int32和time.D
1回复

golang,ebpf和函数持续时间

我正在玩gobpf,并且在计算跟踪的用户空间函数的持续时间时遇到问题。 我使用bpf_ktime_get_ns()读取时间,然后尝试计算增量,但是得到了很多数字,尽管跟踪函数仅睡了1秒钟。 这是经过测试的C程序,其功能称为“ ameba”。 转到代码 程序输出示例:
1回复

如何格式化持续时间

如何将time.Duration格式化/字符串化为ISO8601 ? 例如P3Y6M4DT12H30M5S
2回复

如何将JSON解组到持续时间?

Go的time.Duration时间的惯用方式是什么? 我如何利用time.ParseDuration ?
4回复

减去时间.Go中时间的持续时间

我有一个time.Time从获得的值time.Now()我想另一个时间,这正好是1个月前。 我知道,减去可能与time.Sub()其希望另一time.Time ),但是这将导致time.Duration ,我需要它周围的其他方法。