時間をレジストリに保存する方法はありますか? 私は MFC を使用しており、CTime オブジェクトを操作しています (これにより、CTimeSpan を使用して時差を計算できます) が、C++ ソリューションはどれも優れています。
1 に答える
通常はCTime::Serialize64
、組み込みの MFC シリアル化を使用することをお勧めします。残念ながら、MFC ではデータをレジストリにシリアル化する簡単な方法はありません...
次の 2 つのオプションがあります。
Shaktal が彼のコメントで推奨しているルートを使用CTime::GetTime
して、_time64_t
.
次に、その値をレジストリに書き込むことができます (ただし、最初に文字列に変換します) CWinApp::WriteProfileString
。必要な場合は、 を使用CWinApp::GetProfileString
して文字列に読み戻し、 に変換して、を使用してその結果の値をインスタンス_time64_t
に割り当てます。CTime
=
または、インスタンスCTime::GetAsSystemTime
の日付と時刻を構造体として取得するために使用できます。その後、レジストリにそれを書き込むことができます.CTime64
SYSTEMTIME
SYSTEMTIME
CWinApp::WriteProfileBinary
後で読み戻すには、レジストリ エントリをSYSTEMTIME
withに読み込んで、適切なコンストラクタCWinApp::GetProfileBinary
に渡します。SYSTEMTIME
CTime
これは退屈に思えるかもしれませんが、_time64_t
それを含むソリューションには、アプリケーションにとって重要ではない可能性がある (または、より可能性が高い) コーナーケース (夏時間、タイムゾーンなど) の処理方法にいくつかの利点があります。
例を挙げたいと思いますが、私はこれを iPhone で入力していますが、この種の操作には理想的なインターフェイスではありません。