Преобразование времени из UTC в Местное и наоборот - PullRequest
1 голос
/ 27 мая 2010

Я пытаюсь найти способ преобразовать структуру 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 Затем я сохраню этот номер в БД для дальнейшего использования.

Теперь, когда я, например, меняю часовой пояс, я получаю 64-битное целое число из БД. Преобразуйте его в структуру FILETIME, а затем попытайтесь преобразовать его в локальное значение. Использование FileTimeToLocalFileTime(). Проблема в том, что когда я сравниваю время файла с местным временем того же файла и, конечно, проверяю, что в файл не было внесено никаких изменений. Времена разные. Я не уверен почему, но так каждый раз.

Я также хотел бы знать, существует ли возможный способ преобразования FILETIME в читаемую строку. Без использования CTime or SYSTEMTIME, поскольку они оба преобразуют FILETIME в его UTC-эквивалент, который мне не нужен, поскольку я хотел бы видеть точное преобразованное время из обеих функций LocalFileTimeToFileTime() and FileTimeToLocalFileTime().

Надеюсь, я объяснил ситуацию, и надеюсь, что кто-нибудь поможет мне достичь моей цели

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...