我试图想出一种方法将FILETIME
结构从UTC转换为本地,反之亦然。
我一直在使用这两个功能:FileTimetoLocalFileTime()
和LocalFileTimeToFileTime()
。问题似乎是他们没有按预期工作。
作为一个例子:首先我使用以下方式获得本地文件时间:
WIN32_FIND_DATA fd;
FindFirstFile(_T("Path:To:File"), &fd);
现在fd有本地格式的最后写日期。
然后我使用LocalFileTimeToFileTime()
将最后写入日期转换为UTC,然后将该FILETIME结构转换为64位整数,如MSDN中所述。 http://support.microsoft.com/kb/188768
然后我将该号码存储在DB中以供日后使用。
现在,当我更改时区时,我从数据库中获取64位整数。将其转换为FILETIME
结构,然后尝试将其转换为本地值。使用FileTimeToLocalFileTime()
。问题是当我将该文件时间与同一文件的本地时间进行比较时,当然要确保没有对该文件进行任何更改。时代不同。我不确定为什么,但每次都这样。
我还想知道是否有可能将FILETIME
转换为可读字符串的方法。不使用CTime or SYSTEMTIME
,因为它们都将FILETIME
转换为我不想要的UTC等价物,因为我希望看到两个函数LocalFileTimeToFileTime() and FileTimeToLocalFileTime().
的确切转换时间
希望我已经解释了这种情况,并希望有人帮助我实现目标