Помогите преобразовать текущее время, возвращаемое time() в формат NTP-времени.
NTP-время — это 64-битное беззнаковое число, первые 32 бита — количество секунд, прошедшее от 00:00 1 января 1900 года,
вторые 32-бита — количество милисекунд.
typedef struct NTPTime {
unsigned long sec;
unsigned long msec;
};
time() возвращает количество секунд прошедшее с полуночи 1 января 1970 года.
Как получить милисекуды?
Здравствуйте, KuzyaV, Вы писали:
KV>Помогите преобразовать текущее время, возвращаемое time() в формат NTP-времени. KV>NTP-время — это 64-битное беззнаковое число, первые 32 бита — количество секунд, прошедшее от 00:00 1 января 1900 года, KV>вторые 32-бита — количество милисекунд. KV>
typedef struct NTPTime {
KV> unsigned long sec;
KV> unsigned long msec;
KV>};
KV>time() возвращает количество секунд прошедшее с полуночи 1 января 1970 года. KV>Как получить милисекуды?
static const DWORD deltaDay = 25567; // количество дней между 01.01.1900 и 01.01.1970static const DWORD secOfDay = 86400; // количество секунд в дне
NTPTime TimeToNTPTime(__time32_t t)
{
SYSTEMTIME st;
NTPTime ntp;
GetSystemTime(&st);
ntp.sec = deltaDay*secOfDay+t;
ntp.msec = st.wMilliseconds;
return ntp;
}
Здравствуйте, Centaur, Вы писали:
C>Здравствуйте, Kuzya_vl, Вы писали:
KV>>>time() возвращает количество секунд прошедшее с полуночи 1 января 1970 года. KV>>>Как получить милисекуды?
C>
K_> GetSystemTime(&st);
C>Где в исходном посте написано, что допустимо решение для Windows?
а где написано что недопустимо?
Ничто не ограничивает полет мысли программиста так, как компилятор.
Здравствуйте, dcb-BanDos, Вы писали:
KV>>>>time() возвращает количество секунд прошедшее с полуночи 1 января 1970 года. KV>>>>Как получить милисекуды?
C>>
K_> GetSystemTime(&st);
C>>Где в исходном посте написано, что допустимо решение для Windows?
DB>а где написано что недопустимо?
По логике вещей, если не указана конкретная платформа, значит требуется общее решение.
--
Не можешь достичь желаемого — пожелай достигнутого.