自 golang 纳秒时间戳以来的时间

问题描述 投票:0回答:2

Q1. 如何从纳秒时间戳创建 golang time 结构?

Q2. 那么我如何计算自该时间戳以来的小时数?

go time
2个回答
21
投票

在 Go 中,“时间”对象由结构类型

time.Time
的值表示。

您可以使用

Time
 函数从纳秒时间戳创建 
time.Unix(sec int64, nsec int64)
,其中在
nsec
范围之外传递
[0, 999999999]
是有效的。

您可以使用

time.Since(t Time)
函数,它将自指定时间以来经过的时间返回为
time.Duration
(基本上是以纳秒为单位的时间差)。

t := time.Unix(0, yourTimestamp)
elapsed := time.Since(t)

要获取以小时为单位的经过时间,只需使用

Duration.Hours()
方法即可以浮点数形式返回以小时为单位的持续时间:

fmt.Printf("Elapsed time: %.2f hours", elapsed.Hours())

Go Playground尝试一下。

注:

Duration
可以以类似
"72h3m0.5s"
的格式智能地格式化自己,在其
String()
方法中实现:

fmt.Printf("Elapsed time: %s", elapsed)

5
投票

您将纳秒传递给

time.Unix(0, ts)
,例如:

func main() {
    now := time.Now()
    ts := int64(1257856852039812612)
    timeFromTS := time.Unix(0, ts)
    diff := now.Sub(timeFromTS)
    fmt.Printf("now: %v\ntime from ts: %v\ndiff: %v\ndiff int: %v", now, timeFromTS, diff, int64(diff))
}

游乐场

© www.soinside.com 2019 - 2024. All rights reserved.