我有一些用Go编写的代码,我正在尝试更新这些代码以使用最新的每周构建。(它最后一次在r60下构建)。现在,除以下位外,其他所有东西都在工作:
if t, _, err := os.Time(); err == nil {
port[5] = int32(t)
}
关于如何更新它以与当前Go实施一起使用的任何建议?
Answers:
import "time"
...
port[5] = int32(time.Now().Unix())
如果您希望string
通过strconv
以下方式进行转换:
package main
import (
"fmt"
"strconv"
"time"
)
func main() {
timestamp := strconv.FormatInt(time.Now().UTC().UnixNano(), 10)
fmt.Println(timestamp) // prints: 1436773875771421417
}
另一个提示。 time.Now().UnixNano()
(godoc)将为您提供自纪元以来的十亿分之一秒。严格来说,这不是Unix时间,但是使用同一纪元可以使您获得亚秒级的精度,这很方便。
编辑:更改为匹配当前的golang API
在这里的另一个答案的基础上,要获得易于理解的解释,可以使用:
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
}
在Go Playground中尝试一下。
Unix()
返回值是类型int64
。截断类型int64
值int32
是2038年问题的一个示例。