Go での Unix タイムスタンプの解析
time.Parse 関数を使用して Unix タイムスタンプを time.Time オブジェクトに解析しようとすると、開発者は「範囲外」エラーが発生する可能性があります。このエラーは、特に提供されたレイアウトが Go ドキュメントによれば正しいように見える場合に混乱を招く可能性があります。
このエラーの原因を理解するには、time.Parse が Unix タイムスタンプを処理するように設計されていないことに注意することが重要です。代わりに、特定の形式で時刻値を表す文字列の解析に特化しています。
正しいアプローチ:
Unix タイムスタンプを解析するには、strconv.ParseInt 関数を使用することをお勧めします。タイムスタンプ文字列を整数 (int64) 表現に変換します。この整数を time.Unix 関数で使用して、指定されたタイムスタンプを表す time.Time オブジェクトを作成できます。
package main import ( "fmt" "time" "strconv" ) func main() { unixTimestamp, err := strconv.ParseInt("1405544146", 10, 64) if err != nil { panic(err) } timestamp := time.Unix(unixTimestamp, 0) fmt.Println(timestamp) }
このコードは、Unix タイムスタンプ文字列を正しく解析し、対応する time.Time オブジェクトを作成します。 、さらなる操作や保存に使用できます。
追加注:
32 ビット システムでの潜在的な整数オーバーフローを回避するには、Unix タイムスタンプの解析に strconv.Atoi の代わりに strconv.ParseInt を使用することをお勧めします。 strconv.ParseInt 関数は、より広範囲の整数値をサポートし、システム間の互換性を確保します。
以上がGo で Unix タイムスタンプを正しく解析するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。