[Go] time.Time 型のデータのタイムゾーンを変更する

作成日: 2022年09月08日

Time 構造体の In 関数を使用すると、レシーバーとなる構造体のタイムゾーンを引数に渡したタイムゾーンを保持した Time 構造体を生成することができます。

package main

import (
    "fmt"
    "time"
)

func main() {
    locationUTC, err := time.LoadLocation("UTC")
    if err != nil {
        panic("何らかのエラー処理")
    }

    t, err := time.ParseInLocation("2006-01-02 15:04:05", "2022-09-01 00:00:00", locationUTC)
    if err != nil {
        panic("何らかのエラー処理")
    }
    zoneName, _ := t.Zone()
    fmt.Println(zoneName)

    locationAsiaTokyo, err := time.LoadLocation("Asia/Tokyo")
    if err != nil {
        panic("何らかのエラー処理")
    }
    t = t.In(locationAsiaTokyo)
    zoneName, _ = t.Zone()
    fmt.Println(zoneName)
}

実行結果は下記のとおりです。

UTC
JST
Go