ホームページ >バックエンド開発 >Golang >Go の `time.Parse` 関数で Tar のようなタイムスタンプを正しく解析するにはどうすればよいですか?

Go の `time.Parse` 関数で Tar のようなタイムスタンプを正しく解析するにはどうすればよいですか?

DDD
DDDオリジナル
2024-12-09 07:32:06731ブラウズ

How to Correctly Parse Tar-like Timestamps in Go's `time.Parse` Function?

Go での日付の解析

Go でのタイムスタンプの解析は、time.Parse の複雑な API を使用すると、困難なタスクになる可能性があります。 「2011-01-19 22:15」など、tar によって生成されたタイムスタンプに似たタイムスタンプを解析しようとしたときに発生する一般的な問題について詳しく見てみましょう。

解析の問題

次のコード スニペットは、「解析時間」というエラーで失敗します2011-01-19 22:15": month out of range":

package main

import (
    "fmt"
    "time"
)

func main() {
    var time, error = time.Parse("2011-01-19 22:15", "2011-01-19 22:15")
    if error != nil {
        fmt.Println(error.String())
        return
    }
    fmt.Println(time)
}

エラーについて

エラー メッセージは、time.Parse に提供された形式文字列が予期されていないことを示しています月の値は 1 から 12 の間であり、指定されたタイムスタンプには最初の 1 月 (01 で表されます) が含まれています。 month.

問題への対処

この問題を解決するには、タイムスタンプを正しく解釈できるように形式文字列をカスタマイズする必要があります。 Go 時間パッケージのドキュメントを参照すると、次の指示が見つかります:

"レイアウトで使用される標準時間は次のとおりです:

Mon Jan 2 15:04:05 MST 2006 (MST)は GMT-0700)

独自の形式を定義するには、標準時刻がどのように表示されるかを書き留めます。 "

それに応じてフォーマット文字列を変更すると、次のようになります。

package main

import (
    "fmt"
    "time"
)

func main() {
    t, err := time.Parse("2006-01-02 15:04", "2011-01-19 22:15")
    if err != nil {
        fmt.Println(err)
        return
    }
    fmt.Println(t)
}

このコードは、「2011-01-19 22:15:00 0000 UTC」を出力します。

ドキュメントに記載されているガイドラインに従うことで、フォーマット文字列をカスタマイズして、目的のタイムスタンプを正常に解析することができました。形式。

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

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