将时间从UTC转换为本地,反之亦然

时间:2010-05-27 16:27:53

标签: windows visual-c++ time timezone

我试图想出一种方法将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().的确切转换时间

希望我已经解释了这种情况,并希望有人帮助我实现目标

0 个答案:

没有答案