有没有办法可以在注册表中存储时间?我正在使用MFC并使用CTime对象(这允许我使用CTimeSpan来计算时差)但是任何c ++解决方案都会很棒。
答案 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上输入这个,这不是理想的接口。