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)
См. также
Ссылки
localtime, _localtime32, _localtime64