Следующая полная программа показывает, как получить доступ к значению секунд:
#include <stdio.h>
#include <time.h>
int main (int argc, char *argv[]) {
time_t now;
struct tm *tm;
now = time(0);
if ((tm = localtime (&now)) == NULL) {
printf ("Error extracting time stuff\n");
return 1;
}
printf ("%04d-%02d-%02d %02d:%02d:%02d\n",
tm->tm_year+1900, tm->tm_mon+1, tm->tm_mday,
tm->tm_hour, tm->tm_min, tm->tm_sec);
return 0;
}
Это выводит:
2010-02-11 15:58:29
Как это работает следующим образом.
- он вызывает
time()
, чтобы получить наилучшее приближение к текущему времени (обычно количество секунд с начала эпохи, но на самом деле это не предусмотрено стандартом).
- Затем он вызывает
localtime()
, чтобы преобразовать это в структуру, которая, среди прочего, содержит отдельные поля даты и времени.
- В этот момент вы можете просто отменить ссылку на структуру, чтобы получить интересующие вас поля (
tm_sec
в вашем случае, но я показал несколько из них).
Имейте в виду, что вы также можете использовать gmtime()
вместо localtime()
, если вы хотите время по Гринвичу или UTC для тех, кто слишком молод, чтобы помнить: -).