2014-04-20 13 views
1

在两个日期之间获取持续时间或基于当前基本获取未来日期的惯用方式是什么?现在我正在使用下面的代码来实现这一点。创造持续时间或未来日期的习惯性方式

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

time.Duration定义为type Duration int64,所以basicly你只是做基本的数学运算得到你想要的时间。

例如(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()) 
} 
+1

感谢这么多的整洁回答:) – ymg

+1

由于某种原因,我完全忘记了我曾经用'time.Sleep(time.Minute * 1)'*叹息* – ymg

+0

很高兴我能帮到你。 – OneOfOne

相关问题