ホームページ  >  記事  >  バックエンド開発  >  Goで特定のタイムゾーンの時刻文字列を解析するにはどうすればよいですか?

Goで特定のタイムゾーンの時刻文字列を解析するにはどうすればよいですか?

Barbara Streisand
Barbara Streisandオリジナル
2024-10-24 18:03:02564ブラウズ

How to Parse a Time String with a Specific Time Zone in Go?

特定のタイムゾーンでの時刻の解析

time.ParseTime() を使用して、文字列から時刻構造体を取得できます。引数としてレイアウト文字列を受け取り、入力文字列の形式を指定します。レイアウト文字列は、入力文字列の形式と正確に一致する必要があります。

タイム ゾーンを含む時間文字列を解析する必要がある場合は、time.ParseInLocation() を使用できます。この関数は、レイアウト文字列と場所を引数として受け取ります。場所は、time.Location 値またはタイム ゾーン名を表す文字列です。

たとえば、次のコードは、タイム ゾーンを含む時間文字列を解析します。

<code class="go">import (
    "fmt"
    "time"
)

func main() {
    const layout = "2006-01-02 15:04"
    const timeStr = "2012-07-09 05:02:00 +0000 CEST"

    t, err := time.ParseInLocation(layout, timeStr, time.Local)
    if err != nil {
        fmt.Println(err)
        return
    }

    fmt.Println(t)
}</code>

Thisコードは次の出力を出力します。

2012-07-09 05:02:00 +0000 CEST

time.ParseInLocation() 関数は、レイアウト文字列と指定された場所に従って時間文字列を解析します。この場合、レイアウト文字列は「2006-01-02 15:04」、場所は「CEST」です。 time.ParseInLocation() 関数は、解析された時間を表す time.Time 値を返します。

場所を指定しない場合、time.ParseInLocation() 関数はローカル タイム ゾーンを使用します。これは、解析された時刻がローカル タイム ゾーンに変換されることを意味します。

正しい時刻とタイム ゾーンを使用して time.Time 値を作成することでこれを回避できます:

<code class="go">import (
    "fmt"
    "time"
)

func main() {
    const layout = "2006-01-02 15:04"
    const timeStr = "2012-07-09 05:02:00"
    const timeZone = "CEST"

    pz, err := time.LoadLocation(timeZone)
    if err != nil {
        fmt.Println(err)
        return
    }

    t, err := time.Parse(layout, timeStr)
    if err != nil {
        fmt.Println(err)
        return
    }

    T := t.In(pz)

    fmt.Println(T)
}</code>

これコードは次の出力を出力します:

2012-07-09 05:02:00 +0200 CEST

このコードの出力は、正しいタイムゾーンの時刻を示します。

以上がGoで特定のタイムゾーンの時刻文字列を解析するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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