Golang で時間変換を効率的に実装する方法

PHPz
リリース: 2023-04-11 11:48:16
オリジナル
1758 人が閲覧しました

Golang は比較的新しいプログラミング言語ですが、非常に高い操作効率と強力な同時処理能力のおかげで、開発者の間でますます支持されています。実際の開発では、時刻を別の形式の文字列に変換したり、文字列を時刻に変換したりすることがよくありますが、この記事では、Golang で時刻変換を効率的に実装する方法を紹介します。

  1. 時間タイプ

Golang には、time.Time と time.Duration という 2 つの主な時間タイプがあります。このうち、time.Time は、2021 年 7 月 1 日 12 時など、特定の時刻を表すために使用できる時点を表し、time.Duration は、時間を表すために使用できる期間を表します。 10 秒、5 分など、特定の時点の間の範囲。

  1. 時刻の書式設定された出力

time.Time 型の時刻を文字列に変換する必要がある場合は、time.Time 型メソッドで Format() を使用できます。 。 Format() メソッドは、時刻形式レイアウトを入力パラメータとして受け取り、時刻を対応する文字列に形式設定します。

次はサンプル コードです:

package main

import (
    "fmt"
    "time"
)

func main() {
    t := time.Now()
    fmt.Println(t.Format("2006-01-02 15:04:05"))
}
ログイン後にコピー

実行結果:

2021-07-01 12:00:00
ログイン後にコピー

次の表に示すように、フォーマット文字列では、異なる文字は異なる意味を表します。

#形式文字 意味##2006#01月日 時間 (24 時間形式) 時間 (12 時間形式)分秒ミリ秒午前または午後 (12 時間制)曜日 (月曜日などの完全な名前) 曜日 (月などの省略名) Month (正式名、例: January) Month (省略名、例: 1 月) タイム ゾーン名 (MST、PST など) In定義済みの書式文字を使用するだけでなく、次のように書式指定文字列をカスタマイズすることもできます。
t := time.Now()
fmt.Println(t.Format("2006年01月02日 15:04:05.000 PM MST"))
ログイン後にコピー
年( 使用された年)例)
##02
15
03
04
05
.000
PM
月曜日
Mon
Jan
Jan
MST
文字列を時間型に変換する

    文字列を次のように変換する必要がある場合time.Time 型の時刻の場合は、 time.Parse( ) メソッドを使用できます。 Parse() メソッドは 2 つのパラメーターを受け取ります。最初のパラメーターは時刻文字列で、2 番目のパラメーターは時刻形式レイアウトです。例:
  1. package main
    
    import (
        "fmt"
        "time"
    )
    
    func main() {
        str := "2021-07-01 12:00:00"
        layout := "2006-01-02 15:04:05"
        t, err := time.Parse(layout, str)
        if err != nil {
            fmt.Println(err)
        }
        fmt.Println(t)
    }
    ログイン後にコピー
  2. 上記のコードでは、文字列を time.Time 型変数 t に変換し、プログラムの堅牢性を確保するためにコード内の変換プロセスでのエラーを特定しました。

時間の差を計算する

    Golang では、減算を直接使用して時間の差を計算できます。例:
  1. package main
    
    import (
        "fmt"
        "time"
    )
    
    func main() {
        t1 := time.Date(2021, 7, 1, 12, 0, 0, 0, time.Local)
        t2 := time.Date(2021, 7, 1, 12, 1, 0, 0, time.Local)
        duration := t2.Sub(t1)
        fmt.Println(duration)
    }
    ログイン後にコピー
  2. 上記のコードでは、 time.Date() 関数を使用して 2 つの時刻 t1 と t2 を作成し、それらの時間差を計算し、結果を time.Duration 型の変数期間に保存します。

タイムスタンプを time.Time 型に変換する

    プログラムでは、時間を表すためにタイムスタンプが使用されることがあります。Golang では、time.Unix() を使用できます。 time.Time 型の時刻にタイムスタンプを挿入します。例:
  1. package main
    
    import (
        "fmt"
        "time"
    )
    
    func main() {
        timestamp := int64(1625133600)
        t := time.Unix(timestamp, 0)
        fmt.Println(t)
    }
    ログイン後にコピー
  2. 実行結果:
2021-07-01 13:00:00 +0800 CST
ログイン後にコピー

上記のコードでは、時間を使用しています。Unix() メソッドは、time.Time 型の時刻 t を変換します。

時間操作に関する注意事項

    Golang を使用して時間操作を行うプロセスでは、次の点に注意する必要があります:
  1. 1) time を使用する場合 .Parse() メソッドが文字列を time.Time 型の時刻に変換するときは、時刻文字列が時刻形式レイアウトの形式と一致することを確認する必要があります。一致しない場合はエラーが発生します。

2) 時間を処理するときにタイム ゾーン変換を実行する必要がある場合は、2 つの変数 time.UTC() と time.Local を使用する必要があります。time.UTC() は協定世界時を表し、time.Localシステムの現在のタイムゾーンを表します。

3) 時間を処理するときに、年、月、日、時、分、秒などの時間の個別の部分を取得する必要がある場合は、 Year()、Month()、Day( )、Hour( time.Time 型の)、Minute()、Second() などのメソッド。

4) time.Duration 型変数を使用して期間を表す場合、time.ParseDuration() メソッドを使用して文字列型の期間を time.Duration 型変数に変換し、精度を制御できます。 . .

つまり、Golang を使用して時間を処理する場合は、時間の精度とプログラムの堅牢性を確保するために細部に注意を払う必要があります。

概要

    この記事では、時間形式の出力、文字列の time.Time 型への変換、時間の型、知識ポイントなど、Golang で時間変換操作を実行する方法について説明しました。時差の計算、タイムスタンプの時間への変換、時間タイプなど。この知識を習得することで、時間関連の問題をより効率的に処理し、プログラムの実用性と信頼性を向上させることができます。

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

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート