mktime()

Преобразовать локальное время в системное время

Прототип:

#include <time.h>
time_t mktime( struct tm *timeptr );

Аргументы:

timeptr
Указатель на структуру struct tm, содержащую локальное время, требующее преобразования.

Библиотека:

libc

Описание:

Функция mktime() преобразует локальное время в структуре struct tm, указанной в timeptr, в системное время (всемирное координированное время - UTC).

Исходные значения полей tm_sec, tm_min, tm_hour, tm_mday и tm_mon не ограничены диапазонами, описанными в struct tm. Если значения этих полей не находятся в соответствующих диапазонах, они корректируются так, чтобы находиться в них. Значения полей tm_wday и tm_yday вычисляются после того, как были скорректированы значения остальных полей.

Исходное значение поля tm_isdst интерпретируется следующим образом:

<0
Поле вычисляется.
0
Признак летнего времени не учитывается.
> 0
Признак летнего времени учитывается.

Вызов функции mktime() приводит также к вызову функции tzset().

Возвращаемое значение:

Преобразованное системное время, или -1, если функция mktime() не смогла его преобразовать.

Примеры:

#include <stdio.h>
#include <stdlib.h>
#include <time.h>
static const char *week_day[] = {
"Sunday", "Monday", "Tuesday", "Wednesday",
"Thursday", "Friday", "Saturday"
};
int main( void )
{
struct tm new_year;
time_t t;
new_year.tm_year = 2001 - 1900;
new_year.tm_mon = 0;
new_year.tm_mday = 1;
new_year.tm_hour = 0;
new_year.tm_min = 0;
new_year.tm_sec = 0;
new_year.tm_isdst = 0;
t = mktime( &new_year );
if ( t == (time_t)-1 )
printf( "Преобразование не возможно.\n" );
else
printf( "XXI век начался в %s.\n",
week_day[ new_year.tm_wday ] );
return (EXIT_SUCCESS);
}

Код генерирует следующий вывод:

$ ./a.out XXI век начался в Monday.

Классификация:

ANSI, POSIX 1003.1

Безопасность использования
Точка остановки потока
Нет
Обработчик прерываний
Нет
Обработчик сигналов
Да
В потоке
Да

Тематические ссылки:

time_t, asctime(), asctime_r(), clock(), ctime(), ctime_r(), difftime(), gmtime(), gmtime_r(), localtime(), localtime_r(), strftime(), time(), struct tm, tzset()




Предыдущий раздел: Описание API системной библиотеки