我正在尝试开始一个time.Ticker偶数时间戳。基本上我想要的是这段代码:
package main
import (
"fmt"
"time"
)
func main() {
ticker := time.NewTicker(time.Second * 5)
for i := 0; i < 2; i++ {
select {
case <-ticker.C:
fmt.Println("Time: ", time.Now().Round(time.Second*1))
}
}
ticker.Stop()
}
Run Code Online (Sandbox Code Playgroud)
要始终以偶数 5 秒间隔打印:
Time: 2015-10-21 12:53:50 -0600 MDT
Time: 2015-10-21 12:53:55 -0600 MDT
Run Code Online (Sandbox Code Playgroud)
有一个优雅的解决方案吗?
您可以延迟股票行情的开始时间,使其接近 5 秒:
fiveSec := int64(5 * time.Second)
time.Sleep(time.Duration(fiveSec - (time.Now().UnixNano() % fiveSec)))
ticker := time.NewTicker(time.Second * 5)
Run Code Online (Sandbox Code Playgroud)
或者使用 Time 方法获得正确延迟的另一种方法:
time.Sleep(time.Now().Truncate(5 * time.Second).Add(5 * time.Second).Sub(time.Now()))
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2586 次 |
| 最近记录: |