如何在注册表中存储当前时间?

时间:2013-06-13 22:55:27

标签: c++ time mfc registry

有没有办法可以在注册表中存储时间?我正在使用MFC并使用CTime对象(这允许我使用CTimeSpan来计算时差)但是任何c ++解决方案都会很棒。

1 个答案:

答案 0 :(得分:1)

通常,我建议您使用CTime::Serialize64来使用内置的MFC序列化。唉,MFC没有提供将数据序列化到注册表的简单方法......

您有两种选择:

您可以使用CTime::GetTime获取Shaktal在评论中推荐的路线,以取回_time64_t

然后,您可以使用CWinApp::WriteProfileString将该值写入注册表(但首先将其转换为字符串)。如果需要,请使用CWinApp::GetProfileString将其重新读回字符串以获取字符串,将其转换为_time64_t并使用{{1}将结果值分配给CTime实例}。

或者,您可以使用CTime::GetAsSystemTime=实例中的日期和时间作为CTime64结构返回。然后,您可以使用CWinApp::WriteProfileBinary在注册表中写下SYSTEMTIME

要稍后阅读,只需使用CWinApp::GetProfileBinary将注册表项读入SYSTEMTIME,然后将SYSTEMTIME传递给相应的CTime constructor

虽然这涉及SYSTEMTIME的解决方案似乎更加乏味,但它在处理角落案件方面有一些优势(例如夏令时,时区等)可能(或者更可能)可能不重要为您的申请。

我给你举个例子,但是我在iPhone上输入这个,这不是理想的接口。