2013-06-26 22 views
1

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

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

ответ

0

time_t имеет точность только одну секунду. Если это вам подходит, вы можете вычислить значение time_t за 2004-01-01 с помощью 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)); 
1

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

time_t time = 1072915200 + millis/1000; 

берегись, ctime() отобразит результат по местному времени, а не UTC.

Смежные вопросы