获得Unix时间戳在Go语言(纪元以来的当前时间以秒计)

问题描述:

我已经写在围棋一些代码,我试图用最新的每周工作的基础之上。 (它最后在r60下建成)。一切工作现在除了以下位:获得Unix时间戳在Go语言(纪元以来的当前时间以秒计)

if t, _, err := os.Time(); err == nil { 
    port[5] = int32(t) 
} 

如何更新此任何意见与当前执行去工作?

import "time" 
... 
port[5] = int32(time.Now().Unix()) 
+0

好:)是解决我的问题 – pregmatch 2016-12-13 13:57:43

+3

提醒:'Unix的()'返回值是'int64'类型。截断“int64”类型的值以键入“int32”是[2038年问题]的示例(https://en.wikipedia.org/wiki/Year_2038_problem)。 – peterSO 2017-10-31 16:46:14

+0

go1.9.2达尔文/ amd64这始终如一地返回:1969-12-31 19:00:00,大致相当于:time.Unix(0,0)。这没有截断。 – Breedly 2018-01-28 14:34:19

另一个提示。 time.Now().UnixNano()(godoc)自从时代以来会给你纳秒。这不是严格的Unix时间,但它使用相同的时代给予了亚秒精度,这可以很方便。

编辑:更改以匹配当前golang API

+0

我知道我正在复活一个旧线程,但我想知道...... Python清楚地记录了它在不同平台上获得精确时间时遇到的问题。请参阅http://docs.python.org/2/library/time.html并搜索“精确度”。重点是:这不是因为你有一个float64,所有的小数都很重要。 Go的时间是如何实现的,我能相信这个纳秒级精度有多少? – Niriel 2013-01-30 17:42:19

+4

这不起作用,但是'time.Now()。UnixNano()'([reference](http://golang.org/pkg/time/#Time.UnixNano))。 – 2013-11-04 09:33:36

+1

我相信这是在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 
} 
+0

这是什么意思?如果有人想将一个数字转换为一个字符串,他可以找到如何做到这一点。或者可能是我应该添加另一个答案:如果你想将它转换为bytearray,只需[] byte(...)? – 2016-06-20 06:15:19

+4

@SalvadorDali其实这正是我需要的。继续添加你的答案,将其转换为一个字节数组,如果你愿意,我相信有人最终会来,并需要代码。 – anon58192932 2016-06-24 21:18:09