ホームページ >バックエンド開発 >Golang >Go で Unix タイムスタンプを安全に解析するにはどうすればよいですか?

Go で Unix タイムスタンプを安全に解析するにはどうすればよいですか?

Mary-Kate Olsen
Mary-Kate Olsenオリジナル
2024-12-17 00:49:25298ブラウズ

How to Safely Parse Unix Timestamps in Go?

Unix タイムスタンプを解析する方法

Go で Unix タイムスタンプを解析するのは簡単な作業のように思えるかもしれませんが、予期しないエラーが発生する可能性があります。 time.Parse を使用してタイムスタンプを解析しようとすると、レイアウトが正しいように見えても、範囲外エラーが発生することがあります。

この理由は、time.Parse が Unix タイムスタンプを処理しないためです。代わりに、strconv.ParseInt 関数を使用してタイムスタンプ文字列を int64 に変換し、次に time.Unix 関数を使用して time.Time オブジェクトを作成する必要があります。

次に例を示します:

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)
}

このコードは正しいものを出力しますタイムスタンプ:

2014-07-16 20:55:46 +0000 UTC

重要な注意:

元の例では、strconv.ParseInt の代わりに strconv.Atoi が使用されました。ただし、strconv.Atoi は 32 ビット システムでは整数オーバーフローを引き起こす可能性があります。したがって、すべてのケースを安全に処理するには、strconv.ParseInt を使用することをお勧めします。

以上がGo で Unix タイムスタンプを安全に解析するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。