小编典典

Golang时间。股票行情,如何从偶数时间戳记开始

go

我正在尝试开始一个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

是否有一个优雅的解决方案?


阅读 272

收藏
2020-07-02

共1个答案

小编典典

您可以将股票行情显示的开始时间延迟到将近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()))
2020-07-02