当前位置: 首页 > 面试题库 >

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

微生欣怡
2023-03-14
问题内容

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


 类似资料:
  • 问题内容: 我想动态更改我的股票行情间隔。 我写下了一个例子来向您展示我的工作方式。我的用例不是“加速度计”,而是希望它能给您一个构想。 http://play.golang.org/p/6ANFnoE6pA 出问题的是,股票报价器总是每秒钟都在“滴答”,并且不会加速…有什么想法吗? 问题答案: 遵循对@fzerorubigd的回答,但更加完整。 如前所述,在 这种情况下我们无法使用,因为 循环会

  • 问题内容: 我有一列称为“ s_timestamp”。 如何返回时间戳中具有当天的所有记录? 例如, 我想要以下输出: 让我知道是否不清楚。 问题答案: 只是使用。例如 日期() CURDATE()

  • 问题内容: 如果我在一个自动收录器频道范围内通话并调用stop(),则该频道已停止但未关闭。 在此示例中: 运行产生: 因此,goroutine永远不会退出。有没有更好的方法来处理这种情况?我应该担心goroutine永远不会退出吗? 问题答案: 在第二个频道上发出“完成”信号,然后在代码行情清单和已完成的频道之间选择您的goroutine。 根据您真正想做的事情,可能存在更好的解决方案,但这很难

  • 我选择“无时区”是因为我知道我的应用程序使用的所有时间戳总是UTC。就我得到的文档而言,“with timestamp”的唯一区别是,我可以提供其他时区的值,然后将其转换为UTC。然而,我想避免这样的自动转换,因为如果我知道我的值是UTC,它们几乎没有任何好处。 当我在测试表中添加新记录并使用pgAdmin查看表的内容时,我可以看到插入日期已正确地保存为UTC格式。 但是,当我尝试使用JDBC选择

  • 我正在使用FluentD(v.12最后一个稳定版本)向Kafka发送消息。但是FluentD正在使用一个旧的KafkaProducer,所以记录时间戳总是设置为-1。因此,我必须使用WallclockTimestampExtrator将记录的时间戳设置为消息到达kafka时的时间点。 是否有特定于Kafka Streams的解决方案? 我真的感兴趣的时间戳,是由Fluentd在消息中发送的: “时

  • 问题内容: 如果我在类型表中具有一列并且具有默认值:CURRENT_TIMESTAMP如果我更新同一行中 任何 其他列的值,此列是否会更新为当前时间戳? 似乎没有,但是我不确定这是否应该发生。 我不明白这是什么意思(来自MySQL文档): 如果该列是自动更新的,则当该行中任何其他列的值从其当前值更改时,它将自动更新为当前时间戳。如果所有其他列均设置为其当前值,则该列保持不变。为防止当其他列更改时该