WIN 32 API поддерживает пять форматов времени, и функции для получения времени и преобразования форматов с учетом часовых поясов. Вот эти типы.
System SYSTEMTIME Года, месяц, день, час, секунда, и миллисекунды, взятые с внутренних аппаратных часов. File FILETIME 100-наносекунд интервалов 1 Января, 1601. Local SYSTEMTIME ИЛИ FILETIME Системное время или файловое время преобразованное в локальное время с учетом часовых поясов. MS-DOS WORD Упакованное 16-битовое слово для даты другое для времени. Windows DWORD Количество миллисекунд с тех пор как загруженная система; повторяется каждые 49.7 дней.
Как видите у нас время храниться в WORD, DWROD и еще есть две струтуры. Структура SYSTEMTIME хранит дату и время используя отдельные поля для месяца, дня, года, дня недели, часа, минут, секунд и миллисекунд.
typedef struct _SYSTEMTIME { WORD wYear; // Указывает текущий год WORD wMonth; // Текущий месяц; Январь = 1, Февраль = 2, и так далее WORD wDayOfWeek; // Текущий день недели; Воскресенье = 0, Понедельник = 1, и так далее. WORD wDay; // Текущий день месяца. WORD wHour; // Час. WORD wMinute; // Минуты. WORD wSecond; // Секунды. WORD wMilliseconds; // Миллисекунды. } SYSTEMTIME;
Структура FILETIME - это 64-х разрядное значение, представляющее число сто-наносекундных интервалов, прошедших с первого Января 1601 года:
typedef struct _FILETIME { DWORD dwLowDateTime; // Младшие 32 бита времени файла DWORD dwHighDateTime; // Старшие 32 бита времени файла } FILETIME;