2009-01-13 21 views
0

在Windows Mobile中,我使用FindFirstFile/FindNextFile来搜索某些文件。作为结果的一部分,我得到了一个包含一个搜索结果的WIN32_FIND_DATA结构。该结构包含3个用于文件创建,上次写入和上次访问时间的FILETIME结构。Windows Mobile文件时间

然后我使用FileTimeToSystemTime函数将这些结构转换为SYSTEMTIME。我的问题从这里开始。在SYSTEMTIME结构小时字段不匹配时间的实际小时字段。我发现WM正在根据时区和夏令时进行调整。

例如,如果在5:44:30创建时间并且我在GMT +1,SYSTEMTIME结构报告4:44:30。

我想知道如果任何人有任何想法如何获得实时值在此调整之前?

回答

1

在将文件时间转换为SYSTEMTIME之前,您获得的FileTime采用UTC,请使用FileTimeToLocalFileTime

编辑:固定链接。

+0

谢谢,解决了我的问题。链接到WM相关的功能可能会更好虽然(http://msdn.microsoft.com/en-us/library/aa908762.aspx) – 2009-01-13 19:35:19

1

我不清楚你认为确切的问题是什么。 FindFirst/Next正在返回文件的文件信息,所以时间是正确的 - 它是与文件一起存储的。你是说你期望它在UTC /祖鲁时间(这与SYSTEMTIME结构不同),而不是像本地时间那样的偏移格式?或者相反?无论如何,文件系统显然不同意这一假设,并将时间存储在你认为应该做的事上。如果您想调整与文件关联的时间,则必须使用从GetTimezoneInformation返回的信息或调用FileTimeToLocalFileTime进行手动计算。您可能需要查看所有CE time functions