系统时间,当地时间,文件时间和正常时间

时间:2012-06-15 17:55:29

标签: c++ windows time systemtime filetime

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

谢谢

2 个答案:

答案 0 :(得分:5)

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

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

在一个非常人为的例子中,您完全改变时区和当前时间以补偿时区差异,GetLocalTime()的值将保持不变,但GetSystemTime()将会改变。

这就折扣了这两种功能的输出都会随着每毫秒的变化而变化的事实。通过上面段落中的“改变”,我的意思是“抛弃经常的时间流逝”。

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

答案 1 :(得分:0)

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