ホームページ  >  記事  >  バックエンド開発  >  golang の日付型変換

golang の日付型変換

王林
王林オリジナル
2023-05-15 11:11:37760ブラウズ

Golang は非常に人気のあるプログラミング言語であり、そのパフォーマンスと使いやすさは開発者によって広く認められています。 Golang では、日付型は time パッケージを使用して表現され、時刻の書式設定と日付型の変換は非常に一般的な操作です。この記事ではGolangで日付型変換を行う方法を紹介します。

Golang での時刻の書式設定

Golang では、時刻パッケージの書式設定関数を使用して、時刻を指定された文字列に書式設定できます。たとえば、一般的な時刻書式設定テンプレートの一部を次に示します。

  • "2006-01-02 15:04:05" - 出力: 2020-12-03 15:30:45
  • "01/02/2006 15:04: 05" - 出力: 2020 年 12 月 3 日 15:30:45
  • 「2006 年 1 月 2 日午後 3 時 04 分」 - 出力: 2020 年 12 月 3 日午後 3 時 30 分

上記の時間書式設定テンプレートはいくつかの一般的な形式であり、独自のニーズに応じて形式を定義できます。

Golang での日付型変換

Golang の time パッケージには、日付型間で変換するための Parse 関数と Format 関数が用意されています。 Parse 関数は日付形式文字列を time.Time 型に変換でき、Format 関数は time.Time 型を文字列に変換できます。

以下は例です:

package main

import (
    "fmt"
    "time"
)

func main() {
    // 获取当前时间
    now := time.Now()

    // 将时间格式化成默认格式
    fmt.Println("now time:", now)

    // 将时间格式化成指定格式
    fmt.Println("format time:", now.Format("2006-01-02 15:04:05"))

    // 将字符串解析成时间
    t1, err := time.Parse("2006-01-02 15:04:05", "2020-12-03 15:30:45")
    if err != nil {
        fmt.Println("parse error:", err)
        return
    }
    fmt.Println("parse time:", t1)

    // 将字符串解析成本地时间
    loc, err := time.LoadLocation("Asia/Shanghai")
    if err != nil {
        fmt.Println("load location error:", err)
        return
    }
    t2, err := time.ParseInLocation("2006-01-02 15:04:05", "2020-12-03 15:30:45", loc)
    if err != nil {
        fmt.Println("parse in location error:", err)
        return
    }
    fmt.Println("parse in location time:", t2)
}

上記のコードでは、まず現在時刻を取得し、それをデフォルト形式と指定された形式にフォーマットします。

次に、文字列を時刻型に解析してみます。解析が失敗した場合は、エラーを処理する必要があります。この例では、Parse 関数を使用して時刻を解析します。これには 2 つのパラメータが必要です:

  • 時刻形式、ここでは「2006-01-02 15:04:05」
  • Time 文字列、ここでは「2020-12-03 15:30:45」

解析が成功すると、解析された時間が出力されます。

より複雑な例は、現地時間を UTC 時間に変換することです。 Golang の time パッケージを使用してこの操作を完了できます。具体的な方法は次のとおりです:

package main

import (
    "fmt"
    "time"
)

func main() {
    // 获取当前时间
    now := time.Now()

    // 获取本地时区
    localZone, _ := now.Local().Zone()

    // 根据本地时区获得时间
    localTime, _ := time.ParseInLocation("2006-01-02 15:04:05", "2022-01-01 16:00:00", time.FixedZone(localZone, 8*60*60))

    // 将本地时间转化为UTC时间
    utcTime := localTime.UTC()

    fmt.Println("Local Time:", localTime.Format("2006-01-02 15:04:05"))
    fmt.Println("UTC Time:", utcTime.Format("2006-01-02 15:04:05"))
}

この例では、まず現在時刻を取得し、次にローカル タイム ゾーンを取得します。 Local() 関数を使用してローカル タイム ゾーンを取得し、次に Zone() 関数を使用して GMT とローカル タイム ゾーンの差を取得します。次に、ParseinLocation 関数を使用して時刻文字列を解析しました。この文字列は 2022-01-01 16:00:00 で、時刻形式は「2006-01-02 15:04:05」です。また、 time.FixedZone 関数を使用してタイム ゾーン オブジェクトを作成しました。

最後に、現地時間を UTC 時間に変換して出力します。

概要

Golang では、日付型の変換は非常に一般的な操作です。 Golang 独自の time パッケージを使用して、日付型の変換を簡単に実行できます。この記事の導入により、Golang で日付型変換を実行する方法をすでに理解しているはずです。

以上がgolang の日付型変換の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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