Windows 计算机如何知道当前的日期和时间?

Windows 计算机如何知道当前的日期和时间?,windows,datetime,winapi,operating-system,posix,Windows,Datetime,Winapi,Operating System,Posix,请原谅我对这件事的无知。我可能在很久以前,很多年前在Charles Petzold的编程窗口第四版的书中读到了这一点,我一定把它全忘了。我记得第一章有一些关于计时器分辨率和CPU时钟速度的内容,但我忘记了细节。我认为他回答了这个问题。但我可以想象一些事情。好久不见了 虽然有一个答案,但我并不满意,因为它没有回答我感兴趣的更细微的差别,这将在下面提到 如果有人能系统地回答这个问题,那就太好了 硬件中是否内置了某种时钟,告诉它世界时?然后,它通过添加时区偏移量来计算用户选择的区域设置中的本地时间 这

请原谅我对这件事的无知。我可能在很久以前,很多年前在Charles Petzold的编程窗口第四版的书中读到了这一点,我一定把它全忘了。我记得第一章有一些关于计时器分辨率和CPU时钟速度的内容,但我忘记了细节。我认为他回答了这个问题。但我可以想象一些事情。好久不见了

虽然有一个答案,但我并不满意,因为它没有回答我感兴趣的更细微的差别,这将在下面提到

如果有人能系统地回答这个问题,那就太好了

  • 硬件中是否内置了某种时钟,告诉它世界时?然后,它通过添加时区偏移量来计算用户选择的区域设置中的本地时间

    这个时钟存储时间信息的单位是什么?这如何转化为我们人类对日期和时间的概念?谁来翻译——硬件还是CPU

    我假设在所有操作系统中都有一种与操作系统无关的获取UTC时间的方法

    在Windows下,我记得曾经有一个Win32函数,您可以调用它,并向它传递一个指向它将填充的
    结构的指针。该函数如何知道UTC时间是多少

    就这一点而言,任何操作系统如何知道

  • 最后,计算是CPU绑定的还是设备/硬件/IO绑定的


  • 当然,对(1)的回答也将对(2)进行回答。

    以下MSDN文档中介绍了这一点:

    系统时间是一天中的当前日期和时间。系统保持时间,以便应用程序随时可以访问准确的时间。系统将系统时间基于协调世界时(UTC)。UTC时间是指英格兰格林威治的当前日期和时间

    当系统首次启动时,它会将系统时间设置为基于计算机实时时钟的值,然后定期更新时间。要检索系统时间,请使用函数。GetSystemTime将时间复制到包含月、日、年、工作日、小时、分钟、秒和毫秒的单个成员的结构中。向用户显示此格式很容易

    您还可以使用函数以文件时间格式获取系统时间。GetSystemTimeAsFileTime将时间复制到结构中

    要设置系统时间,请使用功能。SetSystemTime假定您已指定基于UTC的时间

    和功能使用在每个时钟中断时应用的周期性时间调整,将一天中的时间时钟与另一个时间源同步

    请注意,系统可以通过与时间源同步来定期刷新时间。因为系统时间可以向前或向后调整,所以不要通过比较系统时间读数来确定经过的时间。相反,请使用中描述的方法之一