mktime
|
Определено в заголовочном файле
<time.h>
|
||
Перенормирует локальное календарное время, представленное в виде объекта 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++ documentation
для
mktime
|
|