本当に奇妙な動作をしているタイムスタンプ クラスを修正しようとしています。それがしなければならないことは、構築時に現在の時刻を取得するか、文字列として渡された時刻を取得することです。
これらの日付は実際にはどこにも表示されませんが、あるタイムスタンプと別のタイムスタンプの違いがあるため、UTC で作業したいだけです。
いずれにせよ、strptime(timestamp, m_format.c_str(), &time);
文字列から tm 時間を取得するために を呼び出します。この文字列は UTC 時間であるため、time_t として時間を取得するために呼び出したい場合は、現在のタイムゾーンで変更する必要があるため、 を呼び出して取得する場所でmktime
これを行います。問題は、この関数がデフォルト値である 28800 を返すように見えることですが、コードの後半で呼び出すと、正しい値である -7200 が返されます。time.tm_hour-=tz/3600
tz
_get_timezone
この値を初期化するために何かする必要がありますか? 私たちには大きなコードベースがあり、その間に起こったことをすべて知っているわけではありません.
さらに、誰かが同様のクラスへのリンクを持っている場合は、間違いに気付くので、本当に感謝しています。
ありがとうございました。