2014-04-03 5 views
1

Я разобрал дату на C со стрипом.Добавить миллисекунды на дату C

Теперь у меня есть что-то вроде этого:

debugLog(DEB_INFO, "observationDateConverted: %d-%d-%d %d:%d:%d\n", 
         result.tm_year+1900, 
         result.tm_mon + 1, 
         result.tm_mday, 
         result.tm_hour, 
         result.tm_min, 
         result.tm_sec); 

С последней датой, полученной в результате (структура тм)

У меня есть куча миллисекунд, как это: 1396682344000 Что я хочу добавить к этому дате знать дату окончания.

Как я могу продолжить?

+1

Общий подход: Поверните 'struct tm' в метку времени (64-битный int), а затем добавьте' millis/1000' –

+0

Как это сделать? превратитесь в метку времени, я имею в виду – Biribu

+0

, так как миллисекунды не содержат миллисекунд ('000' в конце), но только секунды вы можете просто продолжить и рассчитать годы/месяцы/дни/и т. д. и добавить их. – Theolodis

ответ

1

Общий подход: Включите STRUCT тм в метку времени (64-битной межд), а затем добавить Миллис/1000.

time_t totalseconds = mktime(&result) + (millis/1000); 

Вы можете использовать функции из C's time API преобразовать временную метку обратно struct tm.

+0

Я почти новичок в C. О каких функциях вы говорите? Чтобы найти некоторые примеры или так – Biribu

+0

На этой странице перечислены все функции с примерами: http://fresh2refresh.com/c/c-time-related-functions/ –

+0

У меня есть правильная функция, и теперь я могу получить expirationDate как дату и , спасибо – Biribu

1
time_t totalseconds = mktime(&result); 
uint_64 endtime = (totalseconds * 1000) + msDiff; 

Или, если вы хотите структуру обратно:

time_t totalseconds = mktime(&result), 
    endtimesec = totalseconds + msDiff; 
struct tm * endTime = gmtime(&endtimesec); 
+0

, какие переменные являются totalalseconds, endtime и msDiff? Я должен их объявить. – Biribu

+0

Примечание. Это дает вам время окончания в миллисекундах. Вероятно, вам просто нужна новая временная метка, поэтому вы можете разделить 'msDiff' на 1000 вместо этого, чтобы получить секунды (которые затем можно использовать для преобразования в дату). –

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