<b>#include <time.h></b><b>struct tm *localtime(const time_t *timeval);</b>Функция
localtimegmtimegmtimegmtimelocaltimeДля преобразования разделенной на элементы структуры tm в общее внутреннее значение времени можно применить функцию
mktime<b>#include <time.h></b><b>time_t mktime(struct tm *timeptr);</b>Функция
mktimetime_tДля вывода программой
dateasctimectime<b>#include <time.h></b><b>char *asctime(const struct tm *timeptr);</b><b>char *ctime(const time_t *timeval);</b>Функция
asctimetmtimeptrSun Jun 9 12:34:56 2007\n\0У нее всегда фиксированный формат длиной 26 символов. Функция
ctimeasctime(localtime(timeval))Она принимает необработанное машинное значение времени и преобразует его в местное время.
А теперь выполните упражнение 4.8.
ctimeВ этом примере благодаря приведенному далее программному коду вы увидите функцию
ctime#include <time.h>#include <stdio.h>#include <stdlib.h>int main() { time_t timeval; (void)time(&timeval); printf ("The date is: %s", ctime(&timeval)); exit(0);}Откомпилируйте и затем запустите на выполнение ctime.c, и вы увидите нечто похожее на приведенные далее строки:
$ <b>./ctime</b>The date is: Sat Jun 9 08:02:08 2007.Как это работает
Программа ctime.c вызывает функцию
timectimeДля лучшего управления точным форматированием времени и даты ОС Linux и современные UNIX-подобные системы предоставляют функцию
strftimesprintf<b>#include <time.h></b><b>size_t strftime(char *s, size_t maxsize, const char *format, struct tm *timeptr);</b>Функция
strftimetmtimeptrsmaxsizeformatprintfТаблица 4.3
| Спецификатор преобразования | Описание |
|---|---|
%a | Сокращенное название дня недели |
%А | Полное название дня недели |
%b | Сокращенное название месяца |
%B | Полное название месяца |
%c | Дата и время |
%d | День месяца, 01–31 |
%H | Час, 00–23 |
%I | Час по 12-часовой шкале, 01–12 |
%j | День в году, 001–366 |
%m | Номер месяца в году, 01–12 |
%M | Минуты, 00–59 |
%p | a.m. (до полудня) или p.m. (после полудня) |
%S | Секунды, 00–59 |
%u | Номер дня недели, 1–7 (1 соответствует понедельнику) |
%U | Номер недели в году, 01–53 (воскресенье — первый день недели) |
%V | Номер недели в году, 01–53 (понедельник — первый день недели) |
%w | Номер дня недели, 0–6 (0 соответствует воскресенью) |
%x | Дата в региональном формате |
%X | Время в региональном формате |
%y | Номер года, меньший 1900 |
%Y | Год |
%Z | Название часового пояса |
%% | Символ % |