Namespaces
Variants

mktime

From cppreference.net
Определено в заголовочном файле <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

Смотрите также

преобразует время с начала эпохи в календарное время, выраженное как локальное время
(функция)
C++ documentation для mktime