localtime_s, _localtime32_s, _localtime64_s

Преобразовывает заданное значение времени и исправляется для зоны местного времени.Эти версии localtime, _localtime32, _localtime64 со службами расширений безопасности, как описано в разделе Средства безопасности в CRT.

errno_t localtime_s(
   struct tm* _tm,
   const time_t *time 
);
errno_t _localtime32_s(
   struct tm* _tm,
   const time32_t *time 
);
errno_t _localtime64_s(
   struct tm* _tm,
   const _time64_t *time 
);

Параметры

  • _tm
    Указатель на структуру времени, который требуется заполнить.

  • time
    Указатель к хранимому времени.

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

Нуль, если успешно.Возвращаемое значение кода ошибки, если сбой.Коды ошибок, определенные в Errno.h.Для списка этих ошибок см. errno.

Условия возникновения ошибок

_tm

time

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

Значение в пределах _tm

Вызывает обработчик недопустимого параметра

NULL

any

EINVAL

Не было

Да

NOT NULL (указывает на допустимый памяти)

NULL

EINVAL

Все поля, заданные до -1

Да

NOT NULL (указывает на допустимый памяти)

меньше 0 или больше _MAX__TIME64_T

EINVAL

Все поля, заданные до -1

Нет

В случае первых 2 условий ошибки, недопустимый параметр вызван обработчик, как описано в разделе Проверка параметров.Если выполнение может быть продолжено, то эти функции установки errno В EINVAL и извлечение EINVAL.

Заметки

_localtime32_s функция преобразует время, хранящихся в виде a time_t значение и сохраняет результат в структуре типа tm.long Значение timer представляет секунды истекл с полуночи (00:00: 00, 1-ое января 1970), время в формате UTC.Это значение обычно извлекаются из time функция.

_localtime32_s исправляет для зоны локального времени, если пользователь сначала устанавливается глобальную переменную среды TZ.После TZ набор 3 (других переменных среды_timezone" _daylightи _tzname) будут автоматически.Если TZ переменная не задано, localtime32_s пытается использовать сведения о часовом поясе, определенными в приложении Improvements на Панели управления., Если эти сведения недоступны, то PST8PDT, которое обозначает pacific часовой пояс, используемое по умолчанию.См. _tzset описание этих переменных.TZ расширения Майкрософт и не являются частью определения стандарта ANSI localtime.

ПримечаниеПримечание

Среда должна пытаться определить, является ли целевой летнее время.

_localtime64_s, который использует __time64_t структура позволяет даты, выражаемые вверх до 23:59: 59 - 31-ое декабря 3000, координируемый всемирное время (UTC), в то время как _localtime32_s представляет даты до 03:14: 7-ое января 19, 2038 В формате UTC.

localtime_s встроенная функция, которая принимает значение _localtime64_sи time_t равно __time64_t.Если необходимо принудительно компилятора интерпретировать time_t например, старое пакетом обновления 32 (sp2) time_tможно указать _USE_32BIT_TIME_T.Это вызовет localtime_s выдавать _localtime32_s.Это не рекомендуется, поскольку приложение может завершиться ошибкой после 19-ого января 2038 и не разрешено на платформах с пакетом обновления 64 (sp2).

Поля типа структуры тм храните следующих значений, каждое из int.

  • tm_sec
    С помощью секунды после минуты (от 0 до 59).

  • tm_min
    Минуты после часа (от 0 до 59).

  • tm_hour
    Часы после полуночи (от 0 до 23).

  • tm_mday
    День месяца (от 1 до 31).

  • tm_mon
    Месяц (от 0 до 11; январь = 0).

  • tm_year
    Year (текущий год минус 1900).

  • tm_wday
    День недели (от 0 до 6; воскресенье = 0).

  • tm_yday
    День года (от 0 до 365; 1-ое января = 0).

  • tm_isdst
    Положительное значение, если фактически относится к летнему времени; 0, если летнее время не действует. отрицательное значение, если состояние неизвестно летнего времени.Если TZ переменная среды набор, библиотека времени выполнения c использует правила, соответствующие Соединенные персоналом для реализации вычисление летнего времени не).

Требования

Процедура

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

localtime_s

<time.h>

_localtime32_s

<time.h>

_localtime64_s

<time.h>

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

Пример

// crt_localtime_s.c
/* This program uses _time64 to get the current time 
 * and then uses _localtime64_s() to convert this time to a structure 
 * representing the local time. The program converts the result 
 * from a 24-hour clock to a 12-hour clock and determines the 
 * proper extension (AM or PM).
 */

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

int main( void )
{
        struct tm newtime;
        char am_pm[] = "AM";
        __time64_t long_time;
        char timebuf[26];
        errno_t err;

        // Get time as 64-bit integer.
        _time64( &long_time ); 
        // Convert to local time.
        err = _localtime64_s( &newtime, &long_time ); 
        if (err)
        {
            printf("Invalid argument to _localtime64_s.");
            exit(1);
        }
        if( newtime.tm_hour > 12 )        // Set up extension. 
                strcpy_s( am_pm, sizeof(am_pm), "PM" );
        if( newtime.tm_hour > 12 )        // Convert from 24-hour 
                newtime.tm_hour -= 12;    // to 12-hour clock. 
        if( newtime.tm_hour == 0 )        // Set hour to 12 if midnight.
                newtime.tm_hour = 12;

        // Convert to an ASCII representation. 
        err = asctime_s(timebuf, 26, &newtime);
        if (err)
        {
           printf("Invalid argument to asctime_s.");
           exit(1);
        }
        printf( "%.19s %s\n", timebuf, am_pm );
}

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

Fri Apr 25 01:19:27 PM

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

System:: дата и время:: ToLocalTime

См. также

Ссылки

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

asctime_s, _wasctime_s

ctime, _ctime32, _ctime64, _wctime, _wctime32, _wctime64

_ftime, _ftime32, _ftime64

gmtime_s, _gmtime32_s, _gmtime64_s

localtime, _localtime32, _localtime64

time, _time32, _time64

_tzset