只想确认一件事。
在windows系统中(无论是桌面系统还是Windows Phone之类的设备),如果用户更改了显示时间(可能是调整时区,或者只是在控制面板中更改日期/时间),SYSTEMTIME或FILETIME是否也会随之更改。如果用户更改显示时间,会发生什么变化?
谢谢
发布于 2012-06-16 02:13:51
首先,SYSTEMTIME和FILETIME只是数据结构。他们不会以任何有意义的方式“改变”。
有两个函数返回SYSTEMTIME: GetSystemTime()和GetLocalTime()。第一个返回UTC时间(大致是英国格林威治的时间),第二个返回本地时区的时间。如果你只改变时区,GetLocalTime()的输出将会改变,而GetSystemTime()的输出不会改变。如果你改变时间而不改变时区,那么两者都会改变。
在一个精心设计的示例中,您准确地更改了时区和当前时间以补偿时区差异,GetLocalTime()的值将保持不变,但GetSystemTime()将更改。
这忽略了一个事实,即两个函数的输出往往每毫秒都会发生变化。在上面的段落中,我所说的“改变”是指“摆脱常规的时间流逝”。
有一个函数返回一个FILETIME: GetSystemTimeAsFileTime()。它的输出很自然地遵循GetSystemTime()的输出。
发布于 2012-06-16 02:06:34
据我所知,除非您特别检查其他内容,否则“显示时间”始终是系统在桌面上返回的内容。这在移动环境中可能会有所不同,因为时间更重要,而且他们有更稳定的方法来检查时间。
https://stackoverflow.com/questions/11055841
复制相似问题