Поделиться через


mktime, _mktime32, _mktime64

Преобразование локального времени на значение " календарь ".

time_t mktime(
   struct tm *timeptr 
);
__time32_t _mktime32(
   struct tm *timeptr 
);
__time64_t _mktime64(
   struct tm *timeptr 
);

Параметры

  • timeptr
    Указатель на структуру времени; см. раздел asctime.

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

Возвращает указанный**_mktime32** календарное время, зашифрованное как значение типа time_t.Если timeptr ссылается на дату перед полночью 1-е января 1970 или если календарное время не могут быть представлены, то _mktime32 возвращает – 1 привоженное, чтобы ввести time_t.При использовании _mktime32 и если timeptr ссылается на дату после 03:14. 7-е января 19, 2038 Времени в формате UTC, оно вернет 1 привоженное, чтобы ввести time_t.

_mktime64 возвратит – 1 привоженное, чтобы ввести __time64_t если timeptr ссылается на дату после 23:59. 59 - 31-е декабря 3000, в формате UTC.

Заметки

mktime, _mktime32 и функции _mktime64 преобразования предоставленной структура времени (возможно, неполная), указанная в timeptr в полностью указанную структуру с нормализованными значениями, а затем преобразуют его в значение " календарное время time_t.Преобразованное значение имеет одно и то же время кодирования, какие значения, возвращенные функцией Время.Игнорируются исходные значения tm_wday компонентов и tm_yday структуры timeptr и исходные значения других компонентов не ограничены их обычным диапазонам.

mktime встроенная функция, которая эквивалентна _mktime64, если _USE_32BIT_TIME_T не указан, в этом случае он соответствует _mktime32.

После корректировки во времени в формате UTC, _mktime32 обрабатывает даты от полуночи 1-е января 1970, 03:14: 07 - 19-е января 2038.Даты маркеров**_mktime64** от полуночи 1-е января 1970 в 23:59: 59 - 31-е декабря 3000.Эта корректировка может вызвать эти функции возврата -1 (приведение к time_t, __time32_t или __time64_t), даже если дата задается в пределах диапазона.Например, если в Каир, Египет, равное 2 часам впереди время в формате UTC, 2 часов будет вначале вычитается из даты, указанные в timeptr; это может поместить указанную дату из диапазона.

Эти функции могут быть использованы для проверки и заполнения структуры тм.В случае успеха эти функции задать значения tm_wday и tm_yday как соответствующее и задать другие компоненты для представления указанный календарное время, но с их значения forced к обычным диапазонам.Конечное значение tm_mday не задано до тех пор, пока не будут tm_mon и tm_year определен.При указании время структурирования тм, установите поле tm_isdst :

  • Ноль (0) для указания того, что действует стандартное время.

  • Значение больше 0 для указания того, что летнее время.

  • Значение меньше нуля, чтобы иметь compute кода библиотеки времени выполнения языка c, является ли стандартное или летнее время.

Библиотека времени выполнения c определяет расширение функциональности времени сохранения дневного света из переменной среды ЧП.Если ЧП не задано, то вызов API Win32 GetTimeZoneInformation используется для получения сведений о времени сохранения дневного освещения от операционной системы.Если это не удается, библиотека предполагается, что используются правила Соединенных Штатов для реализации вычисление летнего времени.tm_isdst обязательное поле.Если оно не задано, и его значение не определен, то возвращаемое значение из этих функций непрогнозируемо.Если точки timeptr к структуре тм, возвращаемых во время предыдущего вызова asctime, gmtimeили localtime (или вариантам этих функций), то поле tm_isdst содержит правильное значение.

Обратите внимание, что gmtime и localtime_gmtime32, _gmtime64, _localtime32и _localtime64) используют один буфер в поток для преобразования.Если ввести этот буфер в mktime, _mktime32 или _mktime64, прежнее содержимое уничтожены.

Эти функции проверяют их параметр.Если timeptr недопустимый указатель null, то вызывается обработчик параметра, как описано в Проверка параметровразделе.Если выполнение может быть продолжено, то функции возвращают -1 и задают errno к EINVAL.

Требования

Процедура

Обязательный заголовок

mktime

<time.h>

_mktime32

<time.h>

_mktime64

<time.h>

Дополнительные сведения о совместимости см. в разделе Совместимость во введении.

Библиотеки

Все версии Библиотеки времени выполнения C.

Пример

// crt_mktime.c
/* The example takes a number of days
 * as input and returns the time, the current
 * date, and the specified number of days.
 */

#include <time.h>
#include <stdio.h>

int main( void )
{
   struct tm  when;
   __time64_t now, result;
   int        days;
   char       buff[80];

   time( &now );
   _localtime64_s( &when, &now );
   asctime_s( buff, sizeof(buff), &when );
   printf( "Current time is %s\n", buff );
   days = 20;
   when.tm_mday = when.tm_mday + days;
   if( (result = mktime( &when )) != (time_t)-1 ) {
      asctime_s( buff, sizeof(buff), &when );
      printf( "In %d days the time will be %s\n", days, buff );
   } else
      perror( "mktime failed" );
}

Пример результатов выполнения

Current time is Fri Apr 25 13:34:07 2003

In 20 days the time will be Thu May 15 13:34:07 2003

Эквивалент в .NET Framework

System:: дата и время:: Дата/Время (DateTime)

См. также

Ссылки

Управление временем

asctime, _wasctime

gmtime, _gmtime32, _gmtime64

localtime, _localtime32, _localtime64

_mkgmtime, _mkgmtime32, _mkgmtime64

time, _time32, _time64