「労働者が自分の仕事をうまくやりたいなら、まず自分の道具を研ぎ澄まさなければなりません。」 - 孔子、「論語。陸霊公」
表紙 > プログラミング > Goで特定のタイムゾーンの時刻文字列を解析するにはどうすればよいですか?

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

2024 年 11 月 15 日に公開
ブラウズ:315

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

最新のチュートリアル もっと>

免責事項: 提供されるすべてのリソースの一部はインターネットからのものです。お客様の著作権またはその他の権利および利益の侵害がある場合は、詳細な理由を説明し、著作権または権利および利益の証拠を提出して、電子メール [email protected] に送信してください。 できるだけ早く対応させていただきます。

Copyright© 2022 湘ICP备2022001581号-3