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
См. также
Ссылки
ctime, _ctime32, _ctime64, _wctime, _wctime32, _wctime64
gmtime_s, _gmtime32_s, _gmtime64_s