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

golang 時間の変換

PHPz
PHPzオリジナル
2023-05-27 13:38:083617ブラウズ

Golang は、さまざまな分野で広く使用されている効率的で簡潔なプログラミング言語です。開発では、文字列から時刻への変換、時刻から文字列への変換など、時刻の変換が必要になることがよくありますが、時刻の形式が異なると特定の問題も発生します。そこで、この記事ではGolangにおける時間変換操作を紹介し、その具体的な使い方を例を通して解説します。

1. 文字列を時間に変換する

Golang では、time パッケージの Parse 関数を使用して文字列を時間に変換できます。 Parse関数の具体的な定義は以下の通りです。

func Parse(layout, value string) (Time, error)

このうち、layoutは変換する文字列の時刻形式を表します。 、 value は変換される文字を表します。これら 2 つのパラメーターは、時間パッケージの事前定義された定数を使用できます。特定の定数とその意味は次のとおりです:

時間定数 意味
ANSIC 「Mon Jan _2 15:04:05 2006」
UnixDate "月 1 月 _2 15:04:05 MST 2006"
RFC3339 "2006-01-02T15:04:05Z07:00"

たとえば、文字列「2022/04/12 15:20:00」を時刻に変換するサンプルコードは次のとおりです。

timeStr := "2022/04/12 15:20:00"
layout := "2006/01/02 15:04:05"
t, err := time.Parse(layout, timeStr)
if err != nil {
    fmt.Println("转化失败:", err)
} else {
    fmt.Println("转化成功:", t)
}

このうち、timeStrは変換する文字列、layout は文字列の時刻形式 (「2006/01/02 15:04:05」は年、月、日、時、分、秒を表します)、t は取得された時刻オブジェクトです変換後、err は変換プロセス中のエラー メッセージです。上記のコードを実行すると、出力結果は次のようになります。

转化成功: 2022-04-12 15:20:00 +0000 UTC

2. 時間を文字列に変換する

#同様に、Golang では、Format 関数を使用して時間を文字列に変換できます。この関数の具体的な定義は次のとおりです。

func (t Time) Format(layout string) string

このうち、t は変換対象の時間オブジェクト、layout はフォーマットされた文字列を表します。時間文字列。その使用方法も、上で紹介した Parse 関数と似ています。

例として、時刻を「2022/04/12 15:20:00」という形式の文字列に変換するサンプルコードは以下のとおりです。

t := time.Now()
layout := "2006/01/02 15:04:05"
timeStr := t.Format(layout)
fmt.Println("转化后时间字符串:", timeStr)

このうち、tは現在の時刻とレイアウトが変換されます。以降の時刻の形式 (「2006/01/02 15:04:05」は年、月、日、時、分、秒を表します)、timeStr は変換された時刻文字列です。上記のコードを実行すると、出力結果は次のようになります:

转化后时间字符串: 2022/04/12 15:20:00

3. タイム ゾーン変換

Golang では、time パッケージの Location 関数を使用して時間のタイム ゾーン表現を取得できます。 。定義は以下の通りです。

func LoadLocation(name string) (*Location, error)

このうち、nameはタイムゾーン名(「Asia/Shanghai」など)を表します。

たとえば、現地時間を UTC 時間に変換する場合、time パッケージの UTC 関数を使用できます。サンプルコードは次のとおりです:

t := time.Now()
utc := t.UTC()
fmt.Println("本地时间:", t)
fmt.Println("UTC时间:", utc)

このうち、t は現地時間ですutc は変換された UTC 時間です。上記のコードを実行すると、出力結果は次のようになります:

本地时间: 2022-10-07 15:24:56.200122 +0800 CST m=+0.000498761
UTC时间: 2022-10-07 07:24:56.200122 +0000 UTC

4. 時間の加算と減算

Golang では、Add 関数と Sub 関数を使用して時間の加算と減算を実行できます。具体的な定義は次のとおりです。

func (t Time) Add(d Duration) Time

func (t Time) Sub(u Time) Duration

このうち、Add 関数は次のとおりです。時間 t を追加します。前の Duration オブジェクト d は新しい時間オブジェクトを返します。Sub 関数は、時間 t から別の時間オブジェクト u を減算して、Duration オブジェクトを返します。

たとえば、既存の時刻に 10 分を加算するサンプルコードは次のとおりです。

t := time.Now()
d := 10 * time.Minute
newTime := t.Add(d)
fmt.Println("原时间:", t)
fmt.Println("加10分钟后的时间:", newTime)

このうち、t は既存の時刻、d は加算する時間間隔 (10 分)分)、newTime は追加後に取得された新しい時刻です。上記のコードを実行すると、出力結果は次のようになります:

原时间: 2022-10-07 15:35:26.924559 +0800 CST m=+0.000213898
加10分钟后的时间: 2022-10-07 15:45:26.924559 +0800 CST

5. 時間変換効率を最適化する方法

実際の開発では、大量の時間変換が必要になる場合があります。 Golang 自身の時間を使用する パッケージを変換すると、プログラムの効率が大幅に低下します。現時点では、最適化のためにサードパーティのライブラリを使用できます。

現在、より一般的な時間変換ライブラリには次のものがあります。

    Gorm ライブラリの時間変換コンポーネント
  • Rob Pike のオープン ソースの時間ライブラリ
  • Bjoernu のオープン ソース TimeUtils ライブラリ
これらのサードパーティ ライブラリは、時間変換の効率を大幅に向上させ、異なるシステムの異なる時間レイアウトによって引き起こされる問題も解決します。

概要

この記事では、文字列から時間への変換、時間から文字列への変換、タイムゾーン変換、時間の加減算など、Golang での時間変換の操作を紹介します。同時に、時間変換効率を最適化するための一般的な時間変換ライブラリもいくつか提供されており、この記事が Golang 開発者の時間変換に少しでも役立つことを願っています。

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

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