다음을 통해 공유


localtime_s, _localtime32_s, _localtime64_s

시간 값을 변환하고 표준 시간대를 수정합니다. 이들은 CRT의 보안 기능에 설명된대로 보안이 향상된 localtime, _localtime32, _localtime64 버전입니다.

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
    저장 된 시간에 대한 포인터입니다.

반환 값

성공시 0입니다. 오류가 발생한 경우 반환 값은 오류 코드입니다. 오류 코드는 Errno.h에서 정의 됩니다. 이러한 오류 목록은 errno을 참조하세요.

오류 조건

_tm

time

반환 값

_tm의 값

잘못된 매개 변수 처리기 호출

NULL

any

EINVAL

수정되지 않음

NULL값이 아님(유효한 메모리를 가리킴)

NULL

EINVAL

모든 필드가 -1로 설정

NULL값이 아님(유효한 메모리를 가리킴)

0보다 작거나 _MAX__TIME64_T보다 큰 경우

EINVAL

모든 필드가 -1로 설정

아니요

첫 번째 두 오류 조건에 해당하는 경우, 매개 변수 유효성 검사에 설명된 대로 잘못된 매개 변수 처리기가 호출됩니다. 계속해서 실행하도록 허용된 경우, 이러한 함수는 errno 를 EINVAL 로 설정하고 EINVAL을 반환합니다.

설명

_localtime32_s 함수는 time_t 값으로 저장된 시간을 변환하고 결과를 tm 구조체에 저장합니다. long 값 timer는 협정 세계시 1970년 1월 1일 자정(00:00:00)이후부터 경과된 초 시간을 나타냅니다. 이 값은 보통 time함수에서 얻습니다.

사용자가 처음 전역 환경 변수 TZ를 설정하면 _localtime32_s는 지역 시간 영역을 수정합니다. TZ가 설정되었을 때, 다른 세 가지 환경 변수들(_timezone, _daylight, _tzname) 역시 자동적으로 설정됩니다. TZ 변수가 설정되지 않은 경우, localtime32_s는 제어판의 날짜/시간 응용 프로그램에서 지정된 표준 시간대 정보를 사용하려고 시도합니다. 이 정보를 얻을 수 없는 경우, PST8PDT(태평양 표준 시간대)가 기본적으로 사용됩니다. 이러한 변수 설명은 _tzset를 참조하십시오. TZ는 Microsoft 확장이며 localtime의 ANSI 표준 정의의 일부가 아닙니다.

참고

대상 환경은 일광 절약 시간 상태인지의 여부를 지정하려고 시도해야 합니다.

__time64_t구조체를 사용하는 _localtime64_s는 날짜가 협정 세계시(UTC) 3000년 12월 31일 23시 59분 59초까지 표현되도록 허용합니다. 그러나 _localtime32_s은 날짜를 협정 세계시(UTC) 2038년 1월 19일 03시 14분 07초까지 표현합니다.

localtime_s는 _localtime64_s로 계산되는 인라인 함수이고 time_t은 __time64_t과 동일합니다. 컴파일러가 time_t를 예전 32비트 time_t로서 번역하도록 할 필요가 있을 때에는, _USE_32BIT_TIME_T을 정의할 수 있습니다. 이것을 하는 것은 _localtime32_s를 계산하기 위해 localtime_s를 호출합니다. 2038년 1월 1일 이후 응용 프로그램이 실패할 수 있고 64비트 플랫폼에서 허용되지 않기 때문에 이것은 권장되지 않습니다.

tm형식의 구조체의 필드는 각각이 int인 다음 값들을 저장합니다.

  • tm_sec
    Seconds after minute (0 – 59).

  • tm_min
    Minutes after hour (0 – 59).

  • tm_hour
    자정 이후 시간(0-23)입니다.

  • tm_mday
    Day of month (1 – 31).

  • tm_mon
    Month (0 – 11; January = 0).

  • tm_year
    Year (current year minus 1900).

  • tm_wday
    Day of week (0 – 6; Sunday = 0).

  • tm_yday
    Day of year (0 – 365; January 1 = 0).

  • tm_isdst
    일광 절약 시간(서머타임)이 적용중이면, 양수 값입니다. 일광 절약 시간이 적용중이지 않으면 0입니다. 일광 절약 시간 상태를 알 수 없으면, 음수 값입니다. TZ 환경 변수가 설정됐을 경우, C 런타임 라이브러리는 일광 절약 시간(DST)의 계산을 구현하는 데에 있어서 미국의 규칙을 가정합니다.

요구 사항

루틴

필수 헤더

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::DateTime::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