【问题标题】:SYSTEM Time, Local time, File time and normal time系统时间、本地时间、文件时间和正常时间
【发布时间】:2012-06-18 19:53:17
【问题描述】:

只想确定一件事。
在 Windows 机器(桌面系统或 Windows Phone 之类的设备)中,如果用户更改显示时间(可能调整时区,或者只是更改控制面板中的日期/时间),是否也会更改 @ 987654321@ 或FILETIME。如果用户改变显示时间会改变什么?

谢谢

【问题讨论】:

  • 请更具体。 SYSTEMTIME 和 FILETIME 是数据结构。您没有指定的是如何填写这些数据结构。

标签: c++ windows time systemtime filetime


【解决方案1】:

首先,SYSTEMTIME 和 FILETIME 只是数据结构。它们不会以任何有意义的方式“改变”。

有两个函数返回 SYSTEMTIME:GetSystemTime() 和 GetLocalTime()。第一个返回 UTC 时间(大致是英格兰格林威治的时间),第二个返回本地时区的时间。如果只是更改时区,GetLocalTime() 的输出会改变,但 GetSystemTime() 的输出不会。如果您更改时间但不更改时区,则两者都会更改。

在一个高度人为的示例中,您更改时区和当前时间正是为了补偿时区差异,GetLocalTime() 的值将保持不变,但 GetSystemTime() 会改变。

这忽略了任何一个函数的输出往往每毫秒都在变化的事实。上面段落中的“改变”是指“抛弃常规的时间流逝”。

有一个函数可以返回 FILETIME:GetSystemTimeAsFileTime()。它的输出很自然地遵循 GetSystemTime() 的输出。

【讨论】:

    【解决方案2】:

    据我所知,除非您特别检查其他内容,否则“显示时间”始终是系统在桌面上返回的内容。这在移动环境中可能会有所不同,因为时间更为重要,而且他们有更稳定的检查方式。

    【讨论】:

      猜你喜欢
      • 2015-07-04
      • 1970-01-01
      • 2018-02-12
      • 1970-01-01
      • 2017-10-23
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-08-15
      相关资源
      最近更新 更多