ホームページ >バックエンド開発 >Golang >Goでタイムゾーンオフセットを備えたtime.Timeオブジェクトを構築する方法は?

Goでタイムゾーンオフセットを備えたtime.Timeオブジェクトを構築する方法は?

Mary-Kate Olsen
Mary-Kate Olsenオリジナル
2024-12-11 08:17:09626ブラウズ

How to Construct a time.Time Object with a Time Zone Offset in Go?

タイム ゾーン オフセットを使用した time.Time の構築

ログを操作する場合、タイム ゾーン オフセットを含むタイムスタンプが頻繁に発生します。これらのタイムスタンプを正確に解析して表現するには、タイム ゾーン オフセットを含む time.Time オブジェクトの作成方法を理解することが重要です。

このコンテキストでは、タイム ゾーン オフセットは現地時間と現地時間の差を表します。協定世界時 (UTC)。正のオフセットはタイム ゾーンが UTC より進んでいることを示し、負のオフセットはタイム ゾーンが UTC より遅れていることを示します。

time.FixedZone() を使用する

構築する 1 つの方法特定のタイム ゾーン オフセットを持つ time.Time オブジェクトは、 time.FixedZone() 関数を使用します。この関数は、固定オフセットを使用して time.Location を作成します。

例:

loc := time.FixedZone("myzone", -8*3600)
nativeDate := time.Date(2019, 2, 6, 0, 0, 0, 0, loc)
fmt.Println(nativeDate)

上記のコードは、オフセットが -8 時間の「myzone」という名前の time.Location を作成します。 UTC から 8 時間遅れたタイムゾーンを表します。次に、 time.Date() 関数は、指定された年、月、日、時、分、秒、およびタイム ゾーン オフセットを使用して time.Time を構築します。

Using time.Parse()

タイム ゾーン オフセットが文字列として利用可能な場合は、 time.Parse() 関数を使用して、正しいオフセットを持つ time.Time オブジェクトを作成できます。参照ゾーン オフセット (-0700) のみを含むレイアウト文字列を使用する必要があります。

例:

t, err := time.Parse("-0700", "-0800")
fmt.Println(t, err)

「0800」タイム ゾーン オフセットを解析した結果、時間が作成されます。 -8 時間のオフセットを持つ時間オブジェクト。これにより、文字列表現からタイム ゾーン対応の time.Time オブジェクトへの変換が容易になります。

これらの手法を使用すると、Apache ログの解析の元の問題が解決されます。 -0800 オフセットのタイムスタンプは、次のように解決できます。

t, err := time.Parse("-0700", "-0800")
if err != nil {
    panic(err)
}

nativeDate := time.Date(2019, 2, 6, 0, 0, 0, 0, t.Location())
fmt.Println(nativeDate)

このコードは、指定された日付と -0800 のタイム ゾーン オフセットを持つ time.Time オブジェクト。

以上がGoでタイムゾーンオフセットを備えたtime.Timeオブジェクトを構築する方法は?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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