如何在Cocoa应用程序中收到系统时间更改的通知?

如何在Cocoa应用程序中收到系统时间更改的通知?,第1张

概述我有一个 Cocoa应用程序,记录事件的日期戳.我需要知道系统时间何时被重置以及多少,但我似乎无法在任何告诉我发生这种事情的通知.这种变化可能发生,因为NTP重置时钟或因为用户重置(例如从系统偏好设置).如果只有一个我可以注册接收的NSNotification会很棒,但我愿意接受任何建议. Apple在Snow Leopard(10.6)中添加了NSSystemClockDidChangeNoti 我有一个 Cocoa应用程序,记录事件的日期戳.我需要知道系统时间何时被重置以及多少,但我似乎无法在任何告诉我发生这种事情的通知.这种变化可能发生,因为NTP重置时钟或因为用户重置(例如从系统偏好设置).如果只有一个我可以注册接收的NSNotification会很棒,但我愿意接受任何建议.解决方法 Apple在SNow Leopard(10.6)中添加了NSSystemClockDIDChangeNotification,NSDate的一部分.似乎没有办法在Leopard(10.5)或更早版本中执行此 *** 作.按 Apple NSDate docs:

Posted whenever the system clock is changed. This can be initiated by a call to settimeofday() or the user changing values in the Date and Time Preference panel. The notification object is null. This notification does not contain a userInfo dictionary.

这似乎并没有告诉你“多少”时间已经改变.您可以通过定期(例如,在NSTimer中每隔5秒)用[NSDate date]捕获系统时间,将其保存到变量中,然后在NSSystemClockDIDChangeNotification触发后,抓住新日期并使用NSDate将两者进行比较来计算timeIntervalSinceDate:获取差异的方法.

不是毫秒甚至是第二准确,但非常接近.

编辑:请参阅this post.您可以使用UpTime()C命令获取cpu tics中的系统正常运行时间(稍后可以将其转换为秒).您可以使用它来计算已经改变了多长时间(假设没有系统重启或休眠).即使系统时钟被用户或网络时间协议更改,这也可以工作.

总结

以上是内存溢出为你收集整理的如何在Cocoa应用程序中收到系统时间更改的通知?全部内容,希望文章能够帮你解决如何在Cocoa应用程序中收到系统时间更改的通知?所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/web/1025538.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2022-05-23
下一篇2022-05-23

发表评论

登录后才能评论

评论列表(0条)

    保存