タイムゾーン解析のカスタマイズ
time.ParseTime() を使用して時間文字列を時間構造体に解析すると、結果の構造体がレイアウト文字列でタイムゾーンを指定した場合でも、 は常に UTC での時刻を表します。これは、変換せずに特定のタイムゾーンにある時間を必要とする場合に問題になる可能性があります。
これに対処するには、time.ParseInLocation() を利用します。これにより、明示的な時刻文字列を解析できます。タイムゾーン情報。 time.Location オブジェクトを指定すると、解析された時間に希望のタイムゾーンを指定できます。
これは、time.ParseTime() と time.ParseInLocation() の違いを示す例です。
<code class="go">package main import ( "fmt" "time" ) func main() { // Parsing with time.ParseTime() assumes UTC. t, _ := time.ParseTime("2006-01-02 15:04", "2023-03-08 12:00") fmt.Println(t) // 2023-03-08 12:00:00 +0000 UTC // Parsing with time.ParseInLocation() uses the specified timezone (CET). loc, _ := time.LoadLocation("CET") t, _ = time.ParseInLocation("2006-01-02 15:04", "2023-03-08 12:00", loc) fmt.Println(t) // 2023-03-08 12:00:00 +0100 CET }</code>
この例では、time.ParseTime() は UTC で時刻オブジェクトを生成し、time.ParseInLocation() は指定された CET タイムゾーンで時刻オブジェクトを生成します。
ローカル タイムゾーンの使用
ローカルのタイムゾーンを使用したい場合は、time.ParseInLocation() の Location 引数として time.Local を使用できます。 time.Local は、現在のシステムのローカル タイムゾーンを表します。
更新された例は次のとおりです:
<code class="go">package main import ( "fmt" "time" ) func main() { t, _ := time.ParseInLocation("2006-01-02 15:04", "2023-03-08 12:00", time.Local) fmt.Println(t) // 2023-03-08 12:00:00 +0800 CST }</code>
この場合、時刻オブジェクトはローカル タイムゾーンを使用して解析されます。例では次のようになります。 CST (中国標準時)。
time.ParseInLocation() は、タイム ゾーン情報を含まない時間文字列のみを解析することに注意してください。明示的なタイムゾーンを含む時刻文字列がある場合は、代わりに time.Parse() を使用する必要があります。
以上がGo で特定のタイムゾーンの時刻文字列を解析するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。