localtime, _localtime32, _localtime64

Преобразует значение времени и корректирует его для местного часового пояса. Доступны более безопасные версии этих функций; see , , _localtime64_s_localtime32_s.localtime_s

Синтаксис

struct tm *localtime( const time_t *sourceTime );
struct tm *_localtime32( const __time32_t *sourceTime );
struct tm *_localtime64( const __time64_t *sourceTime );

Параметры

sourceTime
Указатель на сохраненное время.

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

Возвращает указатель на результирующую структуру или значение NULL, если дата, переданная функции, удовлетворяет следующим условиям:

  • До полуночи 1-го января 1970 года.

  • После 03:14: 07 19 января 2038 года в формате UTC (при использовании функций _time32 и time32_t).

  • После 23:59:59 31-го декабря 3000 года в формате UTC (при использовании функций _time64 и __time64_t).

Функция _localtime64, которая использует структуру __time64_t, допускает даты до 23:59:59 31 декабря 3000 года в формате UTC, тогда как функция _localtime32 представляет даты до 23:59:59 18 января 2038 года в формате UTC.

localtime — встроенная функция, которая принимает значение _localtime64 и time_t эквивалентна __time64_t. Если необходимо, чтобы компилятор принудительно интерпретировал time_t как старое 32-разрядное значение time_t, можно определить _USE_32BIT_TIME_T. _USE_32BIT_TIME_T причины localtime вычисления _localtime32. Мы не рекомендуем _USE_32BIT_TIME_Tиспользовать приложение, так как приложение может завершиться сбоем после 18 января 2038 г. и не допускается на 64-разрядных платформах.

Поля типа tm структуры хранят следующие значения:int

Поле Description
tm_sec Секунды после минуты (0 – 59).
tm_min Минуты после часа (0 – 59).
tm_hour Часы с полуночи (0 – 23).
tm_mday День месяца (1 – 31).
tm_mon Месяц (0 – 11; Январь = 0).
tm_year Год (текущий год минус 1900).
tm_wday День недели (0 – 6; Воскресенье = 0).
tm_yday День года (0 – 365; 1 января = 0).
tm_isdst Положительное значение, если летнее время действует; 0, если летнее время не действует; отрицательное значение, если состояние летнего времени неизвестно.

Если задана переменная среды TZ, для реализации перехода на летнее время (DST) в библиотеке времени выполнения C принимаются правила, подходящие для США.

Замечания

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

32- и 64-разрядные версии функций gmtime, mktime, mkgmtime и localtime используют для преобразования единственную для потока структуру tm. Каждый вызов одной из этих подпрограмм уничтожает результат предыдущего вызова.

Функция localtime выполняет коррекцию для местного часового пояса, если пользователь сначала задает глобальную переменную среды TZ. Если переменная TZ задана, автоматически устанавливаются три других переменных среды (_timezone, _daylight и _tzname). TZ Если переменная не задана, пытается использовать сведения часового пояса, localtime указанные в приложении date/Time в панель управления. Если эти сведения не удается получить, PST8PDT, которая обозначает тихоокеанский часовой пояс, используется по умолчанию. См _tzset . описание этих переменных. TZ представляет собой расширение Microsoft и не является частью стандарта ANSI для localtime.

Примечание.

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

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

По умолчанию глобальное состояние этой функции ограничивается приложением. Чтобы изменить это поведение, см . статью "Глобальное состояние" в CRT.

Требования

Маршрут Обязательный заголовок C Обязательный заголовок C++
localtime, _localtime32, _localtime64 <time.h> <ctime> или <time.h>

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

Пример

// crt_localtime.cpp
// compile with: /W3
// This program uses _time64 to get the current time
// and then uses localtime64() 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;

    _time64( &long_time );             // Get time as 64-bit integer.
                                       // Convert to local time.
    newtime = _localtime64( &long_time ); // C4996
    // Note: _localtime64 deprecated; consider _localetime64_s

    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;

    char buff[30];
    asctime_s( buff, sizeof(buff), newtime );
    printf( "%.19s %s\n", buff, am_pm );
}
Tue Feb 12 10:05:58 AM

См. также

Управление временем
asctime, _wasctime
ctime, _ctime32, _ctime64, _wctime, _wctime32, _wctime64
_ftime, _ftime32, _ftime64
gmtime, _gmtime32, _gmtime64
localtime_s, _localtime32_s, _localtime64_s
time, _time32, _time64
_tzset