Time.Parse がタイムゾーン情報を使用しない理由
time.Parse 関数は、時間文字列を解析し、対応する時刻文字列を生成するように設計されています。 time.Value オブジェクト。ただし、タイムゾーン情報は考慮されません。この動作により、タイムゾーンの略語を含む時刻文字列を解析するときに予期しない結果が生じる可能性があります。
次のコード スニペットを考えてみましょう:
import "time" func main() { t, err := time.Parse("2006-01-02 MST", "2018-05-11 IST") if err != nil { return } t2, err := time.Parse("2006-01-02 MST", "2018-05-11 UTC") if err != nil { return } fmt.Println(t.Unix()) fmt.Println(t2.Unix()) }
このコードは、2 つの時刻文字列「2018-05-11」を解析します。 IST」および「2018-05-11 UTC」を抽出し、結果の時刻値の Unix タイムスタンプを出力します。ただし、出力は驚くべきものです。
1525996800 1525996800
タイム文字列が異なるタイムゾーンを参照しているにもかかわらず、両方のタイムスタンプは同じです。これは、time.Parse が時刻文字列を解析するときにタイムゾーン情報を無視するためです。時刻文字列はローカル タイムゾーンにあるかのように処理され、タイムゾーン オフセットは調整されません。
この問題を解決するには、次のいずれかの方法を使用できます:
以上がGo の「time.Parse」がタイムゾーン情報を無視するのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。