我可以假设unix时间戳随着go的增加而增加吗?

时间:2018-10-11 02:12:13

标签: go timestamp

示例...

func MakeTimestamp() int64 {
    return time.Now().UTC().UnixNano() / int64(time.Nanosecond)
}

这将创建类似1539222678608597000

的内容

我将这些数据存储在mongodb上,最终我将使用类似的东西:

db.getCollection('xxxxx').find({ "timestamp":{$lte: 1539194688262205259, $gte: 1539176688262205057} },{"venue": 1},{"product":0})

https://play.golang.org/p/--rHy3ms1c5

1 个答案:

答案 0 :(得分:1)

否,时间戳记不是单调的。它们受操作系统和can skip forward and backward的时钟同步的影响。

这就是Go 1.9添加monotonic part to time.Time的原因。现在,您始终可以可靠地减去两个time.Now()所获得的time.Time值,但是任何格式都会丢弃单调部分。

因此,时间戳不适合按时间顺序排序,但在许多实际情况下,它们“足够好”。鉴于偶尔的错误,您必须自己决定它是否对您有用。 (切勿在运行于笔记本电脑和其他移动设备上的软件中使用它们。待机模式会导致各种奇怪的时钟问题,例如将时间跳到几个 hours 到未来。)