Это сайт — моя персональная записная книжка. Интересна мне, по большей части, история, своя жизнь и немного программирование.

Магия libmapi

Можно я опять про libmapi?

В общем, из libmapi мне приходят два магических числа, они содержат диапазон — начало и конец периода, данные за который возвращает функция GetUserFreeBusyData. По внешнему виду видно, что это не unix timestamp (для несведующих, Unix timestamp — это число секунд с 1 января 1970 года).

По коду libmapi пытался выяснить что это. Код разбросан по файлам, но, в итоге, выглядит так:

// в t приходит <магическое число>

uint32_t t;
uint64_t time;
struct timespec ret;

time = t
time *= 60;
time *= 10000000;

ret.tv_nsec = (long) ((time % (1000 * 1000 * 10)) * 100);
d /= 1000*1000*10;

d -= 11644473600L;

// тут ещё парочка условий, которые не добавляют смысла

ret.tv_sec = (time_t)d;

В таком виде я так и не смог понять что это за число. Порыскав по поисковикам, наткнулся на пост, где упоминается, что это всего лишь число минут с 1 января 1601 года.

Так что мой итоговый код на Python выглядит (без системных вызовов) так:

publish_start, publish_end = map(
    lambda x: x * 60 - 11644473600, # 369 лет
     (publish_start, publish_end)
)