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

Posted

技术标签:

【中文标题】如何在注册表中存储当前时间?【英文标题】:How to store current time in registry? 【发布时间】:2013-06-13 22:55:27 【问题描述】:

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

【问题讨论】:

CTime 对象的内部只是一个__time_64t,您应该可以轻松地将其存储在注册表项中。 您在存储 CTime 对象时遇到了什么问题?您只是在寻找指向 MFC 注册表类的指针吗?或者有什么你想要克服的问题? @jwismar MFC 注册表函数写入一个 int 或字符串,但我知道时间是一个更大的值,所以不确定使用哪个 api。 @zadane 一个字符串(或二进制 blob,我猜它是一种“字符串”)是您想要的 - 查看我的答案。 【参考方案1】:

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

你有两个选择:

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

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

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

要稍后读回它,只需将注册表项读入带有CWinApp::GetProfileBinarySYSTEMTIME 并将SYSTEMTIME 传递给适当的CTime constructor。

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

我给你举个例子,但我是在 iPhone 上输入的,它不是这类事情的理想界面。

【讨论】:

以上是关于如何在注册表中存储当前时间?的主要内容,如果未能解决你的问题,请参考以下文章

登录注册时候的,短信验证如何做?JS获取当前时间

更新当前的 CoreData 条目

如何使用 jwt 在 React 中正确存储当前用户信息

在 Codeigniter 3.0.6 中插入当前日期时间

如何将当前日期和时间插入到具有 DateTime 类型列的 SQL Server 表中?

在已保存时间和当前时间之间计算本地存储 javascript