いろいろ備忘録日記

主に .NET とか Go とか Flutter とか Python絡みのメモを公開しています。

Goメモ-304 (time.Timeをいろいろなタイムゾーンに変換)

関連記事

概要

以下、自分用のメモです。たまに使う時があるけど、毎回忘れているのでここにメモメモ。。。

time.Timeの値をいろいろなタイムゾーンの値に変換する方法です。

DST(夏時間)が適用されるタイムゾーンの場合にどうなるのかが気になったので、以下にサンプル残しておきます。

試してみる

package times

import (
    "time"

    "github.com/devlights/gomy/output"
)

// ChangeTimeZone は、time.Timeをいろいろなタイム・ゾーンの値に変換するサンプルです.
func ChangeTimeZone() error {
    // JSTの現在時刻を取得
    locJst, err := time.LoadLocation("Asia/Tokyo")
    if err != nil {
        return err
    }

    jst := time.Now().In(locJst)
    output.Stdoutf("[JST]", "%v\n", jst)

    // UTCへ変換
    utc := jst.UTC()
    output.Stdoutf("[UTC]", "%v\n", utc)

    // UTCからPDTに変換
    // (*) 夏時間(太平洋夏時間, Daylight Saving Time, DST)が適用されている場合でも
    // このコードで自動的にDSTが考慮される
    locPdt, err := time.LoadLocation("America/Los_Angeles")
    if err != nil {
        return err
    }

    pdt := utc.In(locPdt)
    output.Stdoutf("[PDT]", "%v\n", pdt)

    return nil
}

実行すると以下のようになります。

gitpod /workspace/try-golang (master) $ task
task: [run] go run . -onetime

ENTER EXAMPLE NAME: time_change_timezone

[Name] "time_change_timezone"
[JST]                2023-03-31 17:10:49.977490416 +0900 JST
[UTC]                2023-03-31 08:10:49.977490416 +0000 UTC
[PDT]                2023-03-31 01:10:49.977490416 -0700 PDT


[Elapsed] 2.6182ms

参考情報

Goのおすすめ書籍

Go言語による並行処理

Go言語による並行処理

Amazon


過去の記事については、以下のページからご参照下さい。

サンプルコードは、以下の場所で公開しています。