gpt4 book ai didi

Golang time.Ticker,如何从偶数时间戳开始

转载 作者:IT王子 更新时间:2023-10-29 02:26:34 32 4
gpt4 key购买 nike

我试图在偶数时间戳上开始一个 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()
}

始终以偶数 5 秒的间隔打印:

Time:  2015-10-21 12:53:50 -0600 MDT
Time: 2015-10-21 12:53:55 -0600 MDT

有没有优雅的解决方案?

最佳答案

您可以将自动收报机的开始延迟到非常接近 5 秒的时间:

fiveSec := int64(5 * time.Second)
time.Sleep(time.Duration(fiveSec - (time.Now().UnixNano() % fiveSec)))

ticker := time.NewTicker(time.Second * 5)

或者使用 Time 方法获得正确延迟的另一种方法:

time.Sleep(time.Now().Truncate(5 * time.Second).Add(5 * time.Second).Sub(time.Now()))

关于Golang time.Ticker,如何从偶数时间戳开始,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33267106/

32 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com