Главная > Язык Си > Функции работы с датой и временем
Для работы с системной датой и временем используется библиотека time.h.
Типы, определенные в библиотеке time.h
Тип
Описание
size_t
Целочисленный тип, возвращаемый операцией sizeof.
clock_t
Арифметический тип, подходящий для представления времени.
time_t
Арифметический тип, подходящий для представления времени.
struct tm
Структурный тип, содержащий компоненты календарного времени.
Для определения текущего календарного времени используется функция
time_t time(NULL);
Данная функция возвращает время в секундах начиная с 1 января 1970 г.
Например,
Структура tm имеет вид
struct tm
{
int tm_sec; // секунды после минут [0,59]
int tm_min; // минуты после часов [0,59]
int tm_hour; // часы после полуночи [0,23]
int tm_mday; // день месяца [1,31]
int tm_mon; // месяц года (январь = 0) [0,11]
int tm_year; // год (1900 год = 0)
int tm_wday; // день недели (вс = 0) [0,6]
int tm_yday; // день года (1 января = 0) [0,365]
int tm_isdst; // флаг перехода на летнее время (>0- вкл.) };
Функция
struct tm *localtime(const time_t *ptm) ;
преобразует календарное время, указанное ptm, сохраняет его в структуре tm и возвращает указатель на нее.
Функция
clock_t clock (void);
возвращает наилучшее приближение процессорного времени, прошедшего с момента запуска программы; для получения времени в секундах значение необходимо разделить на константу, определенную в библиотеке time.h
#define CLOCKS_PER_SEC 1000
Если время не доступно или не может быть представлено, возвращает (clock_t) (-1).
Функция
size_t strftime( char *restrict s, // указатель на выходную строку size_t max, // максимальный размер выходной строки const char *restrict fmt, // указатель на строку формата const struct tm *restrict tmpt); // указатель на структуру tm
копирует строку fmt в строку s, заменяя спецификаторы формата в fmt соответствующими данными, взятыми из содержимого структуры времени, на которое указывает tmpt; в строку s помещается не более max символов.
Функция возвращает количество символов (исключая нулевой) в результирующей строке. Если результирующая строка (включая нулевой символ) содержит больше, чем max символов, функция возвращает 0, а содержимое s не определено.
Спец.
Назначение
%a
Локальное сокращенное название дня недели
%A
Локальное полное название дня недели
%b
Локальное сокращенное название месяца
%B
Локальное полное название месяца
%c
Локальный разделитель даты и времени
%d
День месяца в виде десятичного числа (01-31)
%D
Эквивалент %m/%d%y
%e
День месяца (десятичное число): однозначные числа дополнены пробелом
%F
Эквивалент %Y-%m-%d
%g
Последние два разряда года (00-99)
%G
Год в виде десятичного числа
%H
Часы (по 24-часовой шкале) в виде десятичного числа (00-23)
%I
Часы (по 12-часовой шкале) в виде десятичного числа (01-12)
%j
День года в виде десятичного числа (001-366)
%m
Месяц в виде десятичного числа (01-12)
%n
Символ новой строки
%M
Минуты в виде десятичного числа (00-59)
%p
Локальный эквивалент a.m./p.m. для 12-часовой временной шкалы
%r
Локальное 12-часовое время
%R
Эквивалент %Н:%М
%S
Секунды в виде десятичного числа (00-61)
%t
Символ горизонтальной табуляции
%T
Эквивалент %H:%M:%S
%u
Номер дня недели (1-7), где 1 соответствует понедельнику
%U
Номер недели в году, считая воскресенье первым днем недели (00-53)
%w
Номер дня недели в виде десятичного числа, начиная с воскресенья (0-6)
%W
Номер недели в году, считая понедельник первым днем недели (00-53)
%y
Год без века в виде десятичного числа (00-99)
%Y
Год с веком в виде десятичного числа
%z
Смещение от UTC (“-800″ означает на 8 ч по Гринвичу западнее).