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


localtime, _localtime32, _localtime64

Преобразовать значение времени и исправить для местного часового пояса. Существуют более безопасные версии этих функций; см. раздел localtime_s, _localtime32_s, _localtime64_s.

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

Параметры

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

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

Возвращает указатель на структурированный результат или 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 представляет даты до 03:14:07 19-го января 2038, время в формате UTC.

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

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

  • 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 задана, библиотека времени выполнения C принимает правила, соответствующие Соединенным Штатам, для реализации перехода на летнее время (DST).

Заметки

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

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

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

Примечание

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

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

Требования

Подпрограмма

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

localtime

<time.h>

_localtime32

<time.h>

_localtime64

<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 );
}
  

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

System::DateTime::ToLocalTime

См. также

Ссылки

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

asctime, _wasctime

ctime, _ctime32, _ctime64, _wctime, _wctime32, _wctime64

_ftime, _ftime32, _ftime64

gmtime, _gmtime32, _gmtime64

localtime_s, _localtime32_s, _localtime64_s

time, _time32, _time64

_tzset