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

标签 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

最佳答案

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

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

因此,时间戳不适用于稳健的时间顺序,但在许多实际情况下,它们“足够好”。考虑到偶尔的错误,您必须自己决定它是否适合您。 (永远不要在笔记本电脑和其他移动设备上运行的软件中使用它们。待机模式会导致各种奇怪的时钟问题,比如时间跳到 future 几个小时。)

关于go - 我可以假设 unix 时间戳将随着 go 增加吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52751165/

相关文章:

go - Go 中的基本 HTTP 身份验证

xml - libxml2 对包含特殊字符(如 "["、 "[")的元素类型 anyURI 的 xsd 架构验证失败

time - 在 Go 中获取 Unix 时间戳的正确方法是什么

java - 格式化时间戳的简单快捷方法

sql - 将两个小时添加到时间戳

go - 杀死 `go run` 进程产生的幻影进程是什么?

go - GO标志无法正确解析

go - 调用 Google Apps 脚本

postgresql - ALTER table column to timestamp now() 属性

php strtotime 不工作