localtime_s
, , _localtime32_s
_localtime64_s
time_t
시간 값을 구조체로 tm
변환하고 현지 표준 시간대를 수정합니다. 이러한 함수는 CRT의 localtime
_localtime64
_localtime32
보안 기능에 설명된 대로 향상된 보안 기능과 함께 버전입니다.
구문
errno_t localtime_s(
struct tm* const tmDest,
time_t const* const sourceTime
);
errno_t _localtime32_s(
struct tm* tmDest,
__time32_t const* sourceTime
);
errno_t _localtime64_s(
struct tm* tmDest,
__time64_t const* sourceTime
);
매개 변수
tmDest
입력할 시간 구조체에 대한 포인터입니다.
sourceTime
저장된 시간에 대한 포인터입니다.
반환 값
정상적으로 실행되는 경우 0입니다. 오류가 있는 경우 반환 값은 오류 코드입니다. 오류 코드는 .에 정의되어 있습니다 Errno.h
. 이러한 오류 목록은 다음을 참조하세요 errno
.
오류 조건
tmDest |
sourceTime |
반환 값 | tmDest 의 값 |
잘못된 매개 변수 처리기 호출 |
---|---|---|---|---|
NULL |
any | EINVAL |
Not modified | 예 |
NULL 아님(유효한 메모리를 가리킴) |
NULL |
EINVAL |
모든 필드가 -1로 설정됨 | 예 |
NULL 아님(유효한 메모리를 가리킴) |
0보다 작거나 _MAX__TIME64_T 보다 큼 |
EINVAL |
모든 필드가 -1로 설정됨 | 아니요 |
처음 두 오류 조건은 매개 변수 유효성 검사에 설명된 대로 잘못된 매개 변수 처리기를 호출합니다. 계속해서 실행하도록 허용된 경우 이러한 함수는 errno
를 EINVAL
로 설정하고 EINVAL
을 반환합니다.
설명
함수는 localtime_s
값으로 time_t
저장된 시간을 변환하고 결과를 형식 tm
구조에 저장합니다. time_t
값 sourceTime
는 1970년 1월 1일 자정(00:00:00)(UTC) 이후 경과된 초를 나타냅니다. 이 값은 종종 함수에서 time
가져옵니다.
localtime_s
은 사용자가 먼저 전역 환경 변수 TZ
를 설정한 경우 현지 표준 시간대에 맞게 수정됩니다. TZ
를 설정하면 세 가지 다른 환경 변수(_timezone
, _daylight
및 _tzname
)도 자동으로 설정됩니다. 변수가 TZ
설정 localtime_s
되지 않은 경우 제어판 날짜/시간 애플리케이션에 지정된 표준 시간대 정보를 사용하려고 시도합니다. 이 정보를 가져올 수 없는 경우 태평양 표준 시간대를 나타내는 PST8PDT 기본적으로 사용됩니다. 이러한 변수에 대한 설명은 참조 _tzset
하세요. TZ
는 Microsoft 확장이며 localtime
의 ANSI 표준 정의의 일부가 아닙니다.
참고 항목
대상 환경에서는 일광 절약 시간이 적용되는지 확인해야 합니다.
__time64_t
구조체를 사용하는 _localtime64_s
는 3001년 1월 18일 23:59:59(UTC - 협정 세계시)까지 날짜를 표현할 수 있습니다. 반면, _localtime32_s
는 2038년 1월 18일 23:59:59(UTC)까지의 날짜를 나타냅니다.
localtime_s
은 _localtime64_s
로 계산되는 인라인 함수이며 time_t
는 __time64_t
와 동일합니다. 컴파일러가 이전 32비time_t
트로 해석 time_t
되도록 강제해야 하는 경우 이를 정의 _USE_32BIT_TIME_T
localtime_s
하여 계산할 _localtime32_s
수 있습니다. 2038년 1월 18일 이후에 애플리케이션이 실패할 수 있으며 64비트 플랫폼에서는 허용되지 않으므로 권장 _USE_32BIT_TIME_T
하지 않습니다.
구조체 형식 tm
의 필드에는 각각 다음과 같은 값이 저장됩니다 int
.
필드 | 설명 |
---|---|
tm_sec |
분 후 초(0 - 59). |
tm_min |
시간 후 분(0 - 59). |
tm_hour |
자정 이후의 시간(0 - 23). |
tm_mday |
월의 일(1 - 31). |
tm_mon |
월(0 - 11; 1월 = 0). |
tm_year |
연도(현재 연도 - 1900). |
tm_wday |
요일(0 - 6; 일요일 = 0). |
tm_yday |
연중 일(0 - 365; 1월 1일 = 0). |
tm_isdst |
일광 절약 시간이 적용되는 경우 양수 값입니다. 일광 절약 시간이 적용되지 않으면 0입니다. 일광 절약 시간 상태를 알 수 없는 경우 음수 값입니다. |
TZ
환경 변수가 설정된 경우 C 런타임 라이브러리에서는 DST(일광 절약 시간) 계산을 구현하기 위해 미국에 적절한 규칙이 사용된다고 가정합니다.
기본적으로 이 함수의 전역 상태는 애플리케이션으로 범위가 지정됩니다. 이 동작을 변경하려면 CRT 전역 상태를 참조하세요.
요구 사항
루틴에서 반환된 값 | 필수 C 헤더 | 필수 C++ 헤더 |
---|---|---|
localtime_s , , _localtime32_s _localtime64_s |
<time.h> |
<ctime> 또는 <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
참고 항목
시간 관리
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