Go で時間オフセットを場所/タイムゾーンに変換する
時間に依存するデータを扱う場合、多くの場合、時間を変換する必要があります。使用可能な time.Location オブジェクトへのオフセット。これにより、特定のタイム ゾーンを基準とした時間値の正確な表現と操作が可能になります。
たとえば、次のコード スニペットを考えてみましょう。
func main() { offset := "+1100" t, err := time.Parse("15:04 GMT-0700","15:06 GMT"+offset) if err != nil { fmt.Println("fail", err) } fmt.Println(t) fmt.Println(t.UTC()) fmt.Println(t.Location()) }
このコードは、指定された時間値を解析します。
この問題に対処するには、目的の時間オフセットを表す time.Location オブジェクトを手動で作成する必要があります。これは、time.FixedZone 関数を使用して実現できます。
loc := time.FixedZone("UTC+11", +11*60*60)
loc 変数は、UTC 11 タイムゾーンを表す time.Location オブジェクトです。次に、t 変数を次の場所に設定します。
t = t.In(loc)
これにより、GMT オフセットが確実に記録され、エンド ユーザーの実際の場所の時間オフセットに相対した時間を出力できるようになります。 .
例を示します:
package main import ( "fmt" "time" ) func main() { loc := time.FixedZone("UTC+11", +11*60*60) t := time.Now() fmt.Println(t) fmt.Println(t.Location()) t = t.In(loc) fmt.Println(t) fmt.Println(t.Location()) fmt.Println(t.UTC()) fmt.Println(t.Location()) }
このコードは、以下:
2009-11-10 23:00:00 +0000 UTC m=+0.000000001 UTC 2009-11-11 10:00:00 +1100 UTC+11 UTC+11 2009-11-10 23:00:00 +0000 UTC UTC+11
ご覧のとおり、時刻 t は現在 UTC 11 タイムゾーンにあり、その Location() は適切な情報を返します。これにより、正確な時間ベースの操作と計算が可能になります。
以上がGo でタイム オフセットをタイム ゾーンに変換するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。