Goで記述されたコードがあり、最新の毎週のビルドで動作するように更新しようとしています。(最後にr60で構築されました)。次のビットを除いて、すべてが機能しています。
if t, _, err := os.Time(); err == nil {
port[5] = int32(t)
}
現在のGo実装で動作するようにこれを更新する方法に関するアドバイスはありますか?
回答:
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時間ではありませんが、同じエポックを使用して1秒未満の精度が得られるため便利です。
編集:現在のgolangapiに一致するように変更されました
time.Now().UnixNano()
(参照)は機能します。
Unix()
戻り値はタイプint64
です。タイプint64
値をタイプに切り捨てることint32
は、2038年問題の例です。