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

时间:2015-02-27 00:59:52

标签: go time

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

Q2。我如何计算自此时间戳以来的小时数?

2 个答案:

答案 0 :(得分:9)

在Go中,“time”对象由结构类型time.Time的值表示。

您可以使用time.Unix(sec int64, nsec int64)函数从纳秒时间戳创建Time,有效的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)

答案 1 :(得分:3)

您将纳秒传递给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))
}

playground