4

エポックから経過した秒数で時間を表す特注の datetime C++ クラスがあります。これは int64 として格納されます。このクラスは、さまざまなタイプの日時形式を読み書きするための多数のヘルパー関数を提供します。

残念ながら、そのメソッドは多くの操作で gmtime() と mktime() に依存しているため、エポックより前の日付を処理できません。これは、Windows システムではエポックより前の日付をサポートしていません。Windowsで負の値をサポートするgmtimeとmktimeの置き換えを知っている人はいますか。

この制限の例は、アプリケーションが 1970 年より前の誕生日を保存できないことです。これは、すべての日付でこのクラスを使用する必要があるためです。

私が何を求めているのか明確ではありません.これは、日時の実装/使用に関する私の限られた知識と、その巨大なレガシークラスを理解することに消極的であるためです.何か違うことを気軽に提案してください。

4

3 に答える 3

3

Boost.DateTimeを使用するか、CRT ではなくWin32 APIを直接使用できます。

再作業でデータの処理が変わらないことを確認するために、事前に多くのテストを行う可能性があります。リファクタリングを開始する前に、ライブラリの完全な単体テストが実施されていることを確認してください。

世界の複数の異なる場所で値が有効であることを考慮する必要がある場合は、UTC 時間を標準形式として使用し、適切な入力/表示の必要に応じて現地時間に変換します。

于 2013-03-11T18:36:55.000 に答える