Go での Unix タイムスタンプの解析
Go での Unix タイムスタンプの解析は簡単そうに見えますが、予期しないエラーが発生する可能性があります。この記事では、一般的に発生する問題を調査し、解決策を示します。
問題の説明
次のコード スニペットを考えてみましょう。
package main import "fmt" import "time" func main() { tm, err := time.Parse("1136239445", "1405544146") if err != nil{ panic(err) } fmt.Println(tm) }
目標は次のとおりです。 Unix タイムスタンプ「1405544146」を time.Time オブジェクトに変換します。ただし、このコードを実行するとエラーが発生します。
panic: parsing time "1405544146" as "1136239445": cannot parse "1405544146" as "06:20:23.9445"
解決策
time.Parse 関数は、指定されたレイアウトを使用して時刻文字列を解析するように設計されています。この場合、レイアウト「1136239445」は Unix タイムスタンプの形式と一致しません。 Unix タイムスタンプを解析するには、整数表現を使用する必要があります。
time.Parse を使用する代わりに、strconv.ParseInt を使用して文字列を int64 に解析し、次を使用してタイムスタンプを作成できます。 time.Unix:
package main import ( "fmt" "time" "strconv" ) func main() { i, err := strconv.ParseInt("1405544146", 10, 64) if err != nil { panic(err) } tm := time.Unix(i, 0) fmt.Println(tm) }
Output:
2014-07-16 20:55:46 +0000 UTC
strconv.ParseInt を使用すると、レイアウト関連のエラーを回避し、Unix タイムスタンプを正常に解析できます。
以上がGo で Unix タイムスタンプを正しく解析するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。