有没有办法可以在注册表中存储时间?我正在使用 MFC 并使用 CTime 对象(这允许我使用 CTimeSpan 来计算时间差),但任何 c++ 解决方案都会很棒。
1 回答
通常,我会建议您使用CTime::Serialize64
内置的 MFC 序列化。唉,MFC 没有提供将数据序列化到注册表的简单方法......
你有两个选择:
您可以使用 Shaktal 在他的评论中推荐的路线CTime::GetTime
来取回_time64_t
.
然后,您可以将该值写入注册表(但首先将其转换为字符串)CWinApp::WriteProfileString
。当您需要它时,将其读回字符串,使用CWinApp::GetProfileString
以获取字符串,将其转换为 a_time64_t
并将结果值分配给您的CTime
实例,使用=
.
或者,您可以使用CTime::GetAsSystemTime
将CTime64
实例中的日期和时间作为SYSTEMTIME
结构返回。然后,您可以SYSTEMTIME
使用CWinApp::WriteProfileBinary
.
稍后要读回它,只需将注册表项读入SYSTEMTIME
withCWinApp::GetProfileBinary
并将 传递SYSTEMTIME
给适当的CTime
构造函数。
尽管这可能看起来更乏味,但涉及_time64_t
它的解决方案在处理极端情况(例如夏令时、时区等)方面具有一些优势,这可能(或更可能)对您的应用程序并不重要。
我会给你一个例子,但我是在 iPhone 上输入的,它不是这类事情的理想界面。