В POSIX значение time_t
указывается в секундах, однако это не гарантируется стандартом C, поэтому оно может быть неверным в системах, отличных от POSIX. Обычно так и есть (на самом деле, я не уверен, как часто это значение не соответствует секундам).
Вот пример добавления значений времени, которые не предполагают, что time_t
представляет секунды, используя стандартные средства библиотеки, которые на самом деле не особенно хороши для манипулирования временем:
#include <time.h>
#include <stdio.h>
int main()
{
time_t now = time( NULL);
struct tm now_tm = *localtime( &now);
struct tm then_tm = now_tm;
then_tm.tm_sec += 50; // add 50 seconds to the time
mktime( &then_tm); // normalize it
printf( "%s\n", asctime( &now_tm));
printf( "%s\n", asctime( &then_tm));
return 0;
}
Анализ строки времени в соответствующую переменную struct tm
оставлен в качестве упражнения. Функцию strftime()
можно использовать для форматирования новой (а функция POSIX strptime()
может помочь с анализом).