【发布时间】:2012-03-21 07:10:59
【问题描述】:
我有一些用 Go 编写的代码,我正在尝试更新这些代码以使用最新的每周构建。 (它最后是在 r60 下建造的)。现在一切正常,除了以下一点:
if t, _, err := os.Time(); err == nil {
port[5] = int32(t)
}
关于如何更新它以与当前的 Go 实现一起使用的任何建议?
【问题讨论】:
我有一些用 Go 编写的代码,我正在尝试更新这些代码以使用最新的每周构建。 (它最后是在 r60 下建造的)。现在一切正常,除了以下一点:
if t, _, err := os.Time(); err == nil {
port[5] = int32(t)
}
关于如何更新它以与当前的 Go 实现一起使用的任何建议?
【问题讨论】:
import "time"
...
port[5] = time.Now().Unix()
【讨论】:
另一个提示。 time.Now().UnixNano()(godoc) 将为您提供自纪元以来的纳秒。这不是严格意义上的 Unix 时间,但它使用相同的纪元为您提供亚秒级的精度,这很方便。
编辑:更改为匹配当前的 golang api
【讨论】:
time.Now().UnixNano() (reference) 可以。
如果你想要它为string,只需通过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
}
在The Go Playground 试试吧。
【讨论】: