mktime
Определён в заголовочном файле <time.h> | ||
|---|---|---|
time_t mktime( struct tm* arg ); |
Нормализует местное календарное время, представленное объектом struct tm, а также преобразует его во время, прошедшее с начала эпохи, в виде объекта time_t. arg->tm_wday и arg->tm_yday игнорируются. Значения в arg не проверяются на выход за допустимые пределы.
Отрицательное значение arg->tm_isdst приводит к тому, что mktime пытается определить, действовало ли летнее время в указанный момент.
Если преобразование в time_t выполнено успешно, объект arg изменяется. Все поля arg обновляются в соответствии с допустимыми диапазонами. arg->tm_wday и arg->tm_yday пересчитываются с использованием сведений, доступных в других полях.
Параметры
| arg | - | указатель на объект tm, задающий местное календарное время для преобразования |
Возвращаемое значение
время, прошедшее с начала эпохи, в виде объекта time_t в случае успеха или -1, если arg нельзя представить в виде объекта time_t (POSIX также требует в этом случае сохранить EOVERFLOW в errno).
Примечания
Если объект struct tm был получен с помощью POSIX-функции strptime или эквивалентной функции, значение tm_isdst не определено, поэтому перед вызовом mktime его необходимо задать явно.
Пример
#define _POSIX_C_SOURCE 200112L // for setenv on gcc
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
int main(void)
{
setenv("TZ", "/usr/share/zoneinfo/America/New_York", 1); // POSIX-specific
struct tm tm = *localtime(&(time_t){time(NULL)});
printf("Today is %s", asctime(&tm));
printf("(DST is %s)\n", tm.tm_isdst ? "in effect" : "not in effect");
tm.tm_mon -= 100; // tm_mon is now outside its normal range
mktime(&tm); // tm_isdst is not set to -1; today's DST status is used
printf("100 months ago was %s", asctime(&tm));
printf("(DST was %s)\n", tm.tm_isdst ? "in effect" : "not in effect");
}
Возможный вывод:
Today is Fri Apr 22 11:53:36 2016 (DST is in effect) 100 months ago was Sat Dec 22 10:53:36 2007 (DST was not in effect)
Ссылки
- Стандарт C23 (ISO/IEC 9899:2024):
- 7.27.2.3 Функция mktime (стр.: TBD)
- Стандарт C17 (ISO/IEC 9899:2018):
- 7.27.2.3 Функция mktime (стр.: 285-286)
- Стандарт C11 (ISO/IEC 9899:2011):
- 7.27.2.3 Функция mktime (стр.: 390-391)
- Стандарт C99 (ISO/IEC 9899:1999):
- 7.23.2.3 Функция mktime (стр.: 340-341)
- Стандарт C89/C90 (ISO/IEC 9899:1990):
- 4.12.2.3 Функция mktime
См. также
|
(C23)(C11) | преобразует время, прошедшее с начала эпохи, в календарное время, выраженное как местное время (функция) |
Документация C++ для mktime |
|
© cppreference.com
Licensed under the Creative Commons Attribution-ShareAlike Unported License v3.0.
https://en.cppreference.com/c/chrono/mktime