Go の時間解析動作を理解する
Go で time.Parse() 関数を使用して時間文字列を解析すると、 「EDT」などのタイムゾーン識別子は解析されません。ただし、これは必ずしも当てはまります。
Parse() でのタイム ゾーンの処理
time.Parse() のドキュメントによると、ゾーンの略語 (例: 、MST) が入力文字列に指定されている場合、「現在の場所」のそのゾーンに関連付けられたオフセットを使用しようとします。ゾーンの略称が不明な場合、Parse() はゼロ オフセットで時刻を製造された位置に割り当てます。
シナリオ例
「」を使用する次の例を考えてみましょう。タイムゾーンを指定せずに EDT" を実行する場合:
tn, _ := time.Parse("2006 01 02 15:04 MST", "2018 08 01 12:00 EDT")
現在のタイムゾーンが設定されている場所で実行される場合「EDT」の定義されたオフセット (CST など)、時刻は適切なオフセットを使用して正しく解析されます。ただし、「EDT」が定義されていない場所 (CET など) では、Parse() は製造された場所を割り当て、オフセットがゼロになります。
代替アプローチ
タイムゾーン解析に関する潜在的な問題を回避するには、次の点を考慮してください。代替案:
結論
time.Parse() のデフォルトの動作を理解することで、 ) と適切な戦略を採用することで、タイムゾーンのコンテキストに関係なく、Go で正確かつ一貫した時刻解析を保証できます。
以上がGo の `time.Parse()` 関数はタイム ゾーンをどのように処理しますか? ベスト プラクティスは何ですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。