获取Go语言中的Unix时间戳(自纪元以来的当前时间,以秒为单位)

crc*_*crc 72 unix timestamp go

我有一些用Go编写的代码,我正在尝试更新以使用最新的每周构建.(它最后是在r60下建造的).现在一切都在工作,除了以下几点:

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

关于如何更新它以使用当前Go实现的任何建议?

小智 146

import "time"
...
port[5] = int32(time.Now().Unix())
Run Code Online (Sandbox Code Playgroud)

  • 警告:`Unix()`返回值的类型为`int64`.截断类型`int64`值以输入`int32`是[年2038问题]的一个例子(https://en.wikipedia.org/wiki/Year_2038_problem). (24认同)

Fat*_*lan 22

如果你想要它string只是通过strconv以下方式转换它:

package main

import (
    "fmt"
    "strconv"
    "time"
)

func main() {
    timestamp := strconv.FormatInt(time.Now().UTC().UnixNano(), 10)
    fmt.Println(timestamp) // prints: 1436773875771421417
}
Run Code Online (Sandbox Code Playgroud)

  • @SalvadorDali实际上这正是我所需要的.如果你想我确定有人会最终出现并需要代码,请继续添加你的答案以将其转换为字节数组. (9认同)
  • time.Now().UTC().UnixNano() 可以替换为 time.Now().UnixNano() - 文档说结果不依赖于与 t 关联的位置。 (3认同)

Nat*_*ate 12

另一个提示. time.Now().UnixNano()(godoc)将从纪元开始给你纳秒.它不是严格的Unix时间,但它使用相同的纪元为您提供次秒精度,这可以很方便.

编辑:更改为匹配当前的golang api

  • 这在这里不起作用,但是`time.Now().UnixNano()`([参考](http://golang.org/pkg/time/#Time.UnixNano))确实如此. (4认同)