Q1. 我如何从一个纳秒级的时间戳创建一个golang time结构体?
Q2. 然后我如何计算自那个时间戳开始的小时数?
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())
Duration
可以智能地以"72h3m0.5s"
的格式进行格式化,实现在其String()
方法中:fmt.Printf("Elapsed time: %s", elapsed)
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))
}
2262-04-11 23:47:16.854775807 +0000 UTC
。 - Highstead