Преобразовать миллисекунды в time_t

У меня есть количество миллисекунд, начиная с 2004 года до определенной даты. Я хочу преобразовать это в time_t, чтобы отобразить его с помощью ctime()?

Возможно, есть другой способ визуализировать дату по этой отметке времени в миллисекундах, у кого-нибудь есть?


person illvoid    schedule 26.06.2013    source источник


Ответы (2)


Предположим, что под «начиная с 2004 года» вы имеете в виду «начиная с 2004 года в 00:00 UTC», тогда

time_t time = 1072915200 + millis / 1000;

Имейте в виду, что ctime() будет отображать результат по местному времени вместо UTC.

person Edgar Bonet    schedule 26.06.2013

time_t имеет точность только в одну секунду. Если это вас устраивает, вы можете рассчитать значение time_t для 01.01.2004 с помощью mktime() и добавить его к значению времени в секундах.

struct tm tp;
memset(&tp, 0, sizeof(tp));
tp.tm_mday = 1;
tp.tm_mon = 0;
tp.tm_year = 2004 - 1900;
time_t offset = mktime(&tp);

time_t realtime = offset + yourtime / 1000;

printf("%s", ctime(&realtime));
person Tobias Schlegel    schedule 26.06.2013