【问题标题】:Add or subtract a small fraction of time from system time从系统时间中添加或减去一小部分时间
【发布时间】:2017-03-06 03:46:43
【问题描述】:

环境:Windows、C++、Visual Studio 2015

我正在尝试基于时间同步算法对系统时间进行一些小规模调整,该算法以“x 秒,y 纳秒”格式返回系统之间的时间差。

我知道 Windows 提供 SetSystemTime 来调整系统时间,但是 1)SYSTEMTIME 结构仅精确到毫秒,2)据我了解,我需要做一个 get-modify-set 例程来计算时差,可能会影响动作的准确性。

有没有办法将系统时间精确​​到微秒或纳秒?理想情况下不使用外部库,但我仍然对这些开放,因为它是一个几乎没有限制的实践项目。

【问题讨论】:

  • 你为什么需要那个?

标签: c++ windows time


【解决方案1】:

不要试图以任何方式扰乱系统时钟。

我只是将这个逻辑包装在一个获取时间、应用调整并返回调整后的时间的函数中。取决于您的调整逻辑,但通常这不会以任何明显的方式影响性能。

这允许您在需要时明确地获得调整时间,否则获得原始时间。

【讨论】:

  • 为什么 Windows 仍然提供 SetSystemTime?替代实现听起来确实合理,我会看看它是否达到了一致的结果。
  • @AndyYan 我认为 Windows 提供此功能只是因为如果不是,您将根本无法更改系统时间:) 真的很奇怪,即使对于 Windows... 看,此功能需要提升特权,这样做总是有原因的。
  • 实施非常成功和直接 - 被接受。谢谢!
猜你喜欢
  • 2018-03-06
  • 2018-11-21
  • 1970-01-01
  • 2023-04-07
  • 1970-01-01
  • 2018-10-17
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多