time.Time内包含挂钟时间和单调时间,使用==,!=比较时会同时比较两个时间,会出现在不同时区表示地球上同一时刻的两个Time实例是不相等的情况. 样例
直接用==和!=来做比较是不适宜的,这也是time.Time类型不应被用作map类型的key值的原因.
可以使用time.Time的Equal方法.
比较方法:
- Equal
- Before
- After
运算方法:
- Sub
- Util
Go文档中给出的标准的参考时间 "2006-01-02 15:04:05 PM -07:00 Jan Mon MST"
- NewTimer
- AfterFunc
- After
都使用Timer,结构如下
// $GOROOT/src/time/sleep.go (go 1.14)
type Timer struct {
C <-chan Time //接收定时器触发事件的channel
r runtimeTimer//
}
func NewTimer(d Duration) *Timer {
c := make(chan Time, 1) // 带一个缓存的channel
t := &Timer{
C: c,
r: runtimeTimer{
when: when(d),
f: sendTime,
arg: c,
},
}
startTimer(&t.r)
return t
}