$ <b>./anytime</b>The time is 1179643852The time is 1179643854The time is 1179643856The time is 1179643858The time is 1179643860The time is 1179643862The time is 1179643864The time is 1179643866The time is 1179643868The time is 1179643870Как это работает
Программа вызывает функцию
timeИспользование времени и даты в виде количества секунд, прошедших с начала 1970 г., может быть полезно для измерения длительности чего-либо. Вы сможете сосчитать простую разность значений, полученных из двух вызовов функции
timetime_tdifftimetime_tdouble<b>#include <time.h></b><b>double difftime(time_t time1, time_t time2);</b>Функция
difftimeвремя1–время2timedifftimeДля представления времени и даты в более осмысленном (с человеческой точки зрения) виде мы должны преобразовать значение времени в понятные время и дату. Для этого существуют стандартные функции.
Функция
gmtime<b>#include <time.h></b><b>struct tm *gmtime(const time_t timeval)</b>В структуре
tmТаблица 4.2
Элемент tm | Описание |
|---|---|
int tm_sec | Секунды, 0–61 |
int tm_min | Минуты, 0–59 |
int tm_hour | Часы, 0–23 |
int tm_mday | День в месяце, 1–31 |
int tm_mon | Месяц в году, 0–11 (January (январь) соответствует 0) |
int tm_year | Годы, начиная с 1900 г. |
int tm_wday | День недели, 0–6 (Sunday (воскресенье) соответствует 0) |
int tm_yday | День в году, 0–365 |
int tm_isdst | Действующее летнее время |
Диапазон элемента
tm_secВыполните упражнение 4.7.
gmtimeДалее приведена программа gmtime.с, выводящая текущие время и дату с помощью структуры
tmgmtime#include <time.h>#include <stdio.h>#include <stdlib.h>int main() { struct tm *tm_ptr; time_t the_time; (void)time(&the_time); tm_ptr = gmtime(&the_time); printf("Raw time is %ld\n", the_time); printf("gmtime gives:\n"); printf("date: %02d/%02d/%02d\n",tm_ptr->tm_year, tm_ptr->tm_mon+1, tm_ptr->tm_mday); printf("time: %02d:%02d:%02d\n", tm_ptr->tm_hour, tm_ptr->tm_min, tm_ptr->tm_sec); exit(0);}Выполнив эту программу, вы получите хорошее соответствие текущим времени и дате:
$ <b>./gmtime; date</b>Raw time is 1179644196gmtime gives:date: 107/05/20time: 06:56:36Sun May 20 07:56:37 BST 2007Как это работает
Программа вызывает функцию
timeprintfНо здесь у вас возникнет небольшая проблема. Если вы запустите эту программу в часовом поясе, отличном от Greenwich Mean Time (время по Гринвичу) или у вас действует летнее время, как у нас, вы заметите, что время (и, возможно, дата) неправильное. Все дело в том, что функция
gmtimelocaltime