程序开发中,时间操作是不可避免的,在这里记录一下Go中常见的操作。
Duration
Go中的时间最底层的数据结构为Duration, 在Duration的基础上,我们定义了下面的概念:
const (
Nanosecond Duration = 1 // 纳秒,计算Duration的是使用ns
Microsecond = 1000 * Nanosecond 微秒,计算Duration的是使用us
Millisecond = 1000 * Microsecond 毫秒, 计算Duration的是使用ms
Second = 1000 * Millisecond 秒,计算Duration的是使用s
Minute = 60 * Second 分,计算Duration的是使用m
Hour = 60 * Minute 时,计算Duration的是使用h
)
复制代码那么Duration可以如何操作呢?
time.Duration
seconds := 10
time.Duration(seconds)*time.Second // 返回Duration结构
复制代码
time.ParseDuration
ParseDutation主要用于解析字符串,使用字符串的可以避免使用time.Duration不方便表示的时间段。
hours, _ := time.ParseDuration(“10h”) // 生成10个小时的duration
complex, _ := time.ParseDuration(“1h10m10s”) // 生成1小时10分钟10秒的duration
micro, _ := time.ParseDuration(“1µs”) // 生成1微妙的duration
复制代码
time.Sub
如何计算两个时间的时间差,返回Duration结构?注意
start := time.Date(2000, 1, 1, 0, 0, 0, 0, time.UTC)
end := time.Date(2000, 1, 1, 12, 0, 0, 0, time.UTC)
difference := end.Sub(start)
fmt.Printf(“difference = %v\n”, difference)
复制代码
time.Since
time.Since等价于time.Now().Sub(t),用于计算当前时间