我在这里读到Unix() 返回的https://pkg.go.dev/time#Unixthe local Time corresponding to the given Unix time, sec seconds and nsec nanoseconds since January 1, 1970 UTC
您还可以分别使用 UnixNano() 和 UnixMilli() 获取自 1970 年以来的毫秒数或纳秒数。
我想我对这如何安全感到困惑。如果纳秒、毫秒或常规秒的数量超过 int64 的容量,是否会出现日期/时间中断?
另外,我在 go Playground https://go.dev/play/上进行了实验,通过打印出来time.Now.Unix(),我总是会得到 1257894000 秒,即使我运行代码的时间间隔大约是一分钟。
然而,如果我这样做的话,我确实看到了不同
time.Now.Unix()
time.Sleep(time.Duration(1) * time.Second)
time.Now.Unix()
Run Code Online (Sandbox Code Playgroud)
这给了我 1257894000 和 1257894001。
我很困惑 Unix 时间基本上是如何工作的。
Time.Unix(), Time.UnixMicro(), Time.UnixMilli(),Time.UnixNano()全部返回有符号的 int64。
有符号 int64 的最大值为 9,223,372,036,854,775,807
这意味着2920 亿年内Time.Unix()都不会用完整数。毫无疑问,它会比人类更长寿。
最坏的情况是Time.UnixNano()上的整数将用完Friday, April 11, 2262 11:47:16.854 PM GMT。我不了解你,但我会死,希望没有人会使用我的代码。
| 归档时间: |
|
| 查看次数: |
1639 次 |
| 最近记录: |