获得Unix时间戳在Go语言(纪元以来的当前时间以秒计)
我已经写在围棋一些代码,我试图用最新的每周工作的基础之上。 (它最后在r60下建成)。一切工作现在除了以下位:获得Unix时间戳在Go语言(纪元以来的当前时间以秒计)
if t, _, err := os.Time(); err == nil {
port[5] = int32(t)
}
如何更新此任何意见与当前执行去工作?
import "time"
...
port[5] = int32(time.Now().Unix())
另一个提示。 time.Now().UnixNano()
(godoc)自从时代以来会给你纳秒。这不是严格的Unix时间,但它使用相同的时代给予了亚秒精度,这可以很方便。
编辑:更改以匹配当前golang API
我知道我正在复活一个旧线程,但我想知道...... Python清楚地记录了它在不同平台上获得精确时间时遇到的问题。请参阅http://docs.python.org/2/library/time.html并搜索“精确度”。重点是:这不是因为你有一个float64,所有的小数都很重要。 Go的时间是如何实现的,我能相信这个纳秒级精度有多少? – Niriel 2013-01-30 17:42:19
这不起作用,但是'time.Now()。UnixNano()'([reference](http://golang.org/pkg/time/#Time.UnixNano))。 – 2013-11-04 09:33:36
我相信这是在Go 1.0发布之前,API改变了... – Nate 2013-11-25 05:54:05
如果你想把它当作string
只是通过strconv
将其转换:
package main
import (
"fmt"
"strconv"
"time"
)
func main() {
timestamp := strconv.FormatInt(time.Now().UTC().UnixNano(), 10)
fmt.Println(timestamp) // prints: 1436773875771421417
}
这是什么意思?如果有人想将一个数字转换为一个字符串,他可以找到如何做到这一点。或者可能是我应该添加另一个答案:如果你想将它转换为bytearray,只需[] byte(...)? – 2016-06-20 06:15:19
@SalvadorDali其实这正是我需要的。继续添加你的答案,将其转换为一个字节数组,如果你愿意,我相信有人最终会来,并需要代码。 – anon58192932 2016-06-24 21:18:09
好:)是解决我的问题 – pregmatch 2016-12-13 13:57:43
提醒:'Unix的()'返回值是'int64'类型。截断“int64”类型的值以键入“int32”是[2038年问题]的示例(https://en.wikipedia.org/wiki/Year_2038_problem)。 – peterSO 2017-10-31 16:46:14
go1.9.2达尔文/ amd64这始终如一地返回:1969-12-31 19:00:00,大致相当于:time.Unix(0,0)。这没有截断。 – Breedly 2018-01-28 14:34:19