SystemTimeToFileTime()
От: Taleisin Россия http://linkorn.ru
Дата: 16.01.02 10:52
Оценка:
Проблема в том, что SystemTimeToFileTime() конвертает время последней модификации файла без учета часовой зоны,
то есть устанавливает время по Гринвичу, хотя для этого дела там существует функция FileTimeToLocalTime()
И в итоге получается что дата становится больше на 3 часа, а летом соответственно на 4!
Просто отнять эти 3 часа не получается, так как дата хранится в 64-битной структуре, а как производить всякие арифметические действия я так и не нашел!
Есть правда 64-битный тип LARGE_INTEGER, но это тоже union с двумя 32-битными полями..... ;-(
Как быть?
http://linkorn.ru
Re: SystemTimeToFileTime()
От: VVV Россия  
Дата: 16.01.02 11:39
Оценка:
Здравствуйте Taleisin, Вы писали:

T>Проблема в том, что SystemTimeToFileTime() конвертает время последней модификации файла без учета часовой зоны,

T>то есть устанавливает время по Гринвичу, хотя для этого дела там существует функция FileTimeToLocalTime()
T>И в итоге получается что дата становится больше на 3 часа, а летом соответственно на 4!
T>Просто отнять эти 3 часа не получается, так как дата хранится в 64-битной структуре, а как производить всякие арифметические действия я так и не нашел!
T>Есть правда 64-битный тип LARGE_INTEGER, но это тоже union с двумя 32-битными полями..... ;-(
T>Как быть?

Про время системное и локальное вопроса не понял, но как работать с FILETIME могу сказать:
1. просто привести к 64-битному целому
#define FT_24HOUR  (864000000000ui64)

FILETIME ft;
*(unsigned __int64*)&ft=FT_24HOUR;
unsigned __int64 *pft=(unsigned __int64*)&ft;
(*pft)+=234;

//и т.д.


2. использовать MFC класс CTime
Re: SystemTimeToFileTime()
От: Willi  
Дата: 16.01.02 12:51
Оценка:
Здравствуйте Taleisin, Вы писали:

T>Проблема в том, что SystemTimeToFileTime() конвертает время последней модификации файла без учета часовой зоны,

T>то есть устанавливает время по Гринвичу, хотя для этого дела там существует функция FileTimeToLocalTime()
T>И в итоге получается что дата становится больше на 3 часа, а летом соответственно на 4!
T>Просто отнять эти 3 часа не получается, так как дата хранится в 64-битной структуре, а как производить всякие арифметические действия я так и не нашел!
T>Есть правда 64-битный тип LARGE_INTEGER, но это тоже union с двумя 32-битными полями..... ;-(
T>Как быть?

Нельзя ли попонятней объяснить что требуется сделать и что не получается?
\/\/i||i
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.