タイム ゾーン オフセットを使用した 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 サイトの他の関連記事を参照してください。