【问题标题】:What's the correct way to get a Unix timestamp in Go在 Go 中获取 Unix 时间戳的正确方法是什么
【发布时间】:2014-06-09 23:08:00
【问题描述】:

在 Go 中获取 Unix 时间戳的正确方法是什么?我以为是time.Now().Unix(),但显然不是。

http://play.golang.org/p/KoJADUDxOS

所以time.Now().Unix() 告诉我 unix 时间戳是 1257894000 而我的浏览器告诉我它是 1398351437。另外 www.unixtimestamp.de 告诉我这是 1398351704 这是我所期望的。为什么来自 Go 的那个离得那么远?顺便说一句,我在本地机器上得到了相同的结果。

我错过了什么?

更新

好的,原来这只是 play.golang.org 上的一个问题。我以为我也在本地对其进行了测试,但我现在又看了一遍,是的,在我的本地机器上一切都是正确的。

【问题讨论】:

  • 你为什么认为这是错误的?当我写这篇评论时,时间是 1398352146,在你运行上面发布的输出之后仅仅 442 秒。你的输出有什么问题?
  • 只需将www.unixtimestamp.de 的结果与time.Now().Unix() 给您的结果进行比较。还将它与通过开发工具提供的进行比较。看看截图。
  • 时间在 play.golang.org 上被冻结

标签: time go timestamp unix-timestamp


【解决方案1】:

Unix() 确实会产生一个 Unix 时间戳:自纪元以来的秒数。 我认为http://golang.org/pkg/time/#Time.Unix 的文档在这里很清楚。

也许您对 Unix 时间戳不感兴趣,但对一些人类可读的时间感兴趣?在这种情况下使用Format()http://golang.org/pkg/time/#Time.Format

而且:操场只有合成时间。操场上的绝对值与 UTC 不对应。

【讨论】:

  • 是的,但是将www.unixtimestamp.de 的结果与time.Now().Unix() 给出的结果进行比较。看看截图。
  • 我在本地机器上得到了同样的错误结果。
  • 那么你的本地时钟是错误的。 Go 从操作系统报告时间。
猜你喜欢
  • 2013-03-20
  • 2022-12-12
  • 2013-05-21
  • 1970-01-01
  • 2015-11-04
  • 2013-08-04
  • 2011-11-19
  • 2020-10-22
  • 1970-01-01
相关资源
最近更新 更多