以Go语言获取Unix时间戳(当前时间(自纪元起以秒为单位)
我有一些代码是用Go编写的,我正在尝试更新这些代码,以便使用最新的每周版本。(它上一次是在r60下建造的)。现在,除以下位外,一切正常:以Go语言获取Unix时间戳(当前时间(自纪元起以秒为单位),unix,timestamp,go,Unix,Timestamp,Go,我有一些代码是用Go编写的,我正在尝试更新这些代码,以便使用最新的每周版本。(它上一次是在r60下建造的)。现在,除以下位外,一切正常: if t, _, err := os.Time(); err == nil { port[5] = int32(t) } 关于如何更新此文件以配合当前的Go实施,有什么建议吗?另一个提示time.Now().UnixNano()将为您提供从新纪元开始的纳秒。这不是严格意义上的Unix时间,但它使用相同的历元可以提供亚秒精度,这非常方便 import
if t, _, err := os.Time(); err == nil {
port[5] = int32(t)
}
关于如何更新此文件以配合当前的Go实施,有什么建议吗?另一个提示
time.Now().UnixNano()
将为您提供从新纪元开始的纳秒。这不是严格意义上的Unix时间,但它使用相同的历元可以提供亚秒精度,这非常方便
import "time"
...
port[5] = time.Now().Unix()
编辑:更改为匹配当前的golang api如果您想将其作为
字符串
只需通过strconv
转换即可:
package main
import (
"fmt"
"strconv"
"time"
)
func main() {
timestamp := strconv.FormatInt(time.Now().UTC().UnixNano(), 10)
fmt.Println(timestamp) // prints: 1436773875771421417
}
基于这里另一个答案的想法,要获得人类可读的解释,您可以使用:
package main
import (
"fmt"
"time"
)
func main() {
timestamp := time.Unix(time.Now().Unix(), 0)
fmt.Printf("%v", timestamp) // prints: 2009-11-10 23:00:00 +0000 UTC
}
试试看。我知道我在复活一条旧线,但我想知道。。。Python清楚地记录了在不同平台上获取精确时间的问题。请参阅并搜索“精度”。关键是:不是因为你有一个浮点数64,所有的小数都是有意义的。Go的时间是如何实现的,我能相信多少纳秒精度?这在这里不起作用,但时间。现在()。UnixNano()()起作用。这有什么意义?如果有人想把一个数字转换成一个字符串,他可以找到方法。或者我应该补充另一个答案:如果你想把它转换成字节数组,只需执行[]字节(…)?@salvadodali实际上这正是我需要的。如果您愿意,请继续添加您的答案,将其转换为字节数组。我相信最终会有人需要代码。time.Now().UTC().UnixNano()可以替换为time.Now().UnixNano()-文档表示,结果不取决于与t.go1.9.2 darwin/amd64相关的位置,它始终返回:1969-12-31 19:00:00,大致相当于:time.Unix(0,0)。这是没有截断的。