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

p_m*_*mcp 7 time go

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

Q2.然后,我如何计算自此时间戳以来的小时数?

icz*_*cza 11

在Go中,"time"对象由struct类型的值表示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)
Run Code Online (Sandbox Code Playgroud)

要获得以小时为单位的经过时间,只需使用Duration.Hours()以小时为单位返回持续时间的方法作为浮点数:

fmt.Printf("Elapsed time: %.2f hours", elapsed.Hours())
Run Code Online (Sandbox Code Playgroud)

Go Playground尝试一下.

注意:

Duration可以"72h3m0.5s"通过其String()方法实现的格式智能地格式化:

fmt.Printf("Elapsed time: %s", elapsed)
Run Code Online (Sandbox Code Playgroud)


One*_*One 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:", now, timeFromTS, diff, int64(diff))
}
Run Code Online (Sandbox Code Playgroud)

playground