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

How to store current time in registry?

本文关键字:时间 存储 注册表      更新时间:2023-10-16

是否有办法在注册表中存储时间?我正在使用MFC和CTime对象(它允许我使用CTimeSpan来计算时差),但任何c++解决方案将是伟大的。

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

你有两个选择:

你可以走Shaktal在他的评论中推荐的路线,使用CTime::GetTime来获得_time64_t

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

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

要稍后读取它,只需使用CWinApp::GetProfileBinary将注册表项读入SYSTEMTIME,并将SYSTEMTIME传递给适当的CTime构造函数。

虽然这可能看起来比涉及_time64_t的解决方案更乏味,但它在如何处理极端情况(例如夏令时,时区等)方面有一些优势,这些情况可能(或更有可能)对您的应用程序不重要。

我可以给你举个例子,但我是在iPhone上输入的这不是这种东西的理想界面