【问题标题】:How to get millisecond value of a timestamp如何获取时间戳的毫秒值
【发布时间】:2021-01-07 18:34:08
【问题描述】:

Go 具有提取时间戳的几乎所有组成部分的方法,例如 time.Second()time.Nano(),但没有提取时间戳的毫秒部分的方法。

如何提取时间戳的毫秒值。

例如,对于像这样的时间戳:

2021-01-07 10:33:06.511

我要提取511

【问题讨论】:

  • @mkopriva 最好使用 time.Millisecond 常量值 insted of 1000_000。更明确
  • 根据@DanielHornik 的评论更新版本:play.golang.org/p/ambNkD_apB2

标签: go time


【解决方案1】:

要访问小数秒,您可以使用time.Nanosecond()。如果我们将其转换为time.Durationtime.Duration 正好是纳秒数),我们可以利用它的Duration.Milliseconds() 方法(当然这没有什么魔力,但代码会更清晰、更易于阅读):

func extractMs(t time.Time) int64 {
    return time.Duration(t.Nanosecond()).Milliseconds()
}

Go Playground 上试试。

【讨论】:

    【解决方案2】:

    在 cmets 中有一个答案,但我想在这里发帖是规范的:

    func extractMillisecond(t time.Time) int {
        ms := time.Duration(t.Nanosecond()) / time.Millisecond
        return int(ms)
    }
    

    【讨论】:

    • 您可以将其缩短为:return t.Nanosecond() / int64(time.Millisecond),并消除一种类型转换。
    猜你喜欢
    • 2013-06-22
    • 2016-09-22
    • 1970-01-01
    • 2017-06-12
    • 2017-11-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多