繁体   English   中英

创建持续时间或将来日期的惯用方式

[英]Idiomatic way of creating duration or future date

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

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())

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

谢谢

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())
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM