asctime_s, _wasctime_s

tm 시간 구조체를 문자열로 변환합니다. 이러한 함수는 CRTasctime_wasctime보안 기능에 설명된 대로 보안이 향상된 버전입니다.

구문

errno_t asctime_s(
   char* buffer,
   size_t numberOfElements,
   const struct tm *tmSource
);
errno_t _wasctime_s(
   wchar_t* buffer,
   size_t numberOfElements
   const struct tm *tmSource
);
template <size_t size>
errno_t asctime_s(
   char (&buffer)[size],
   const struct tm *tmSource
); // C++ only
template <size_t size>
errno_t _wasctime_s(
   wchar_t (&buffer)[size],
   const struct tm *tmSource
); // C++ only

매개 변수

buffer
문자열 결과를 저장할 버퍼에 대한 포인터입니다. 이 함수는 유효한 메모리 위치에 대한 포인터가 numberOfElements에 의해 지정된 크기를 가지고 있다고 가정합니다.

numberOfElements
결과를 저장하는 데 사용되는 버퍼의 크기입니다.

tmSource
시간/날짜 구조체입니다. 이 함수는 유효한 struct tm 개체에 대한 포인터가 있다고 가정합니다.

반환 값

정상적으로 실행되는 경우 0입니다. 오류가 발생하면 매개 변수 유효성 검사에 설명된 대로 잘못된 매개 변수 처리기가 호출됩니다. 계속해서 실행하도록 허용된 경우 반환 값은 오류 코드입니다. 오류 코드는 ERRNO.H에서 정의됩니다. 자세한 내용은 errno 상수입니다. 각 오류 조건에 대해 반환되는 실제 오류 코드가 다음 표에 나와 있습니다.

오류 조건

buffer numberOfElements tmSource 반환 값 buffer의 값
NULL 모두 모두 EINVAL Not modified
NULL 아님(유효한 메모리를 가리킴) 0 모두 EINVAL Not modified
NULL 아님 0<numberOfElements< 26 모두 EINVAL 빈 문자열
NULL 아님 >= 26 NULL EINVAL 빈 문자열
NULL 아님 >= 26 시간 구성 요소에 대한 잘못된 시간 구조체 또는 범위를 벗어난 값 EINVAL 빈 문자열

참고 항목

wasctime_s에 대한 오류 조건은 크기 제한이 단어 단위로 측정된다는 점을 제외하면 asctime_s와 비슷합니다.

설명

asctime 함수는 구조체로 저장된 시간을 문자열로 변환합니다. 값은 tmSource 일반적으로 호출 gmtime 에서 가져옵니다.localtime TIME.H에 정의된 대로 tm 구조체를 작성하는 데 두 함수를 사용할 수 있습니다.

timeptr 멤버
tm_hour 자정 이후의 시간(0-23)
tm_isdst 일광 절약 시간이 적용되는 경우 양수입니다. 일광 절약 시간이 적용되지 않으면 0입니다. 일광 절약 시간의 상태 알 수 없는 경우 음수입니다. C 런타임 라이브러리에서는 DST(일광 절약 시간) 계산 구현을 위한 미국의 규칙이 사용된다고 가정합니다.
tm_mday 날짜(1-31)
tm_min 시간 후 분(0-59)
tm_mon 월(0-11; 1월 = 0)
tm_sec 분 후 초(0-59)
tm_wday 요일(0-6; 일요일 = 0)
tm_yday 연중 일(0-365; 1월 1일 = 0)
tm_year 연도(현재 연도 빼기 1900)

또한 변환된 문자열은 현지 표준 시간대 설정에 따라 조정됩니다. 현지 시간을 구성하는 방법에 대한 자세한 내용은 , , _time64_time32, _ftime, _ftime64_ftime32localtime_s ,_localtime32_s_localtime64_s함수를 참조time하세요. 표준 시간대 환경 및 전역 변수 정의에 대한 자세한 내용은 다음을 참조하세요 _tzset.

asctime_s에 의해 생성된 문자열 결과는 정확히 26자를 포함하며 Wed Jan 2 02:03:55 1980\n\0 형식을 갖습니다. 24시간제가 사용됩니다. 모든 필드에는 상수 너비가 있습니다. 줄 바꿈 문자 및 null 문자는 문자열의 마지막 두 자리를 차지합니다. 전달된 numberOfElements 값은 최소한 이 크기여야 합니다. 이보다 작으면 오류 코드가 EINVAL반환됩니다.

_wasctime_sasctime_s의 와이드 문자 버전입니다. 그렇지 않으면_wasctime_sasctime_s 이 동일하게 작동합니다.

이러한 함수의 디버그 라이브러리 버전은 먼저 버퍼를 0xFE 채웁니다. 이 동작을 사용하지 않도록 설정하려면 .를 사용합니다 _CrtSetDebugFillThreshold.

기본적으로 이 함수의 전역 상태는 애플리케이션으로 범위가 지정됩니다. 이 동작을 변경하려면 CRT의 전역 상태를 참조하세요.

일반 텍스트 루틴 매핑

TCHAR.H 루틴 _UNICODE 정의 _MBCS 되지 않음 _MBCS 정의 _UNICODE 정의
_tasctime_s asctime_s asctime_s _wasctime_s

C++에서는 템플릿 오버로드를 통해 이러한 함수를 사용하는 것이 더욱 간단해집니다. 오버로드는 버퍼 길이를 자동으로 유추할 수 있으므로 크기 인수를 지정할 필요가 없습니다. 자세한 내용은 보안 템플릿 오버로드를 참조 하세요.

요구 사항

루틴에서 반환된 값 필수 헤더
asctime_s <time.h>
_wasctime_s <time.h> 또는 <wchar.h>

보안

버퍼 포인터가 아니 NULL 고 포인터가 유효한 버퍼를 가리키지 않는 경우 함수는 위치에 있는 모든 것을 덮어씁 수 있습니다. 이 오류로 인해 액세스 위반이 발생할 수도 있습니다.

전달된 크기 인수가 버퍼의 실제 크기보다 크면 버퍼 오버런이 발생할 수 있습니다.

예시

이 프로그램은 시스템 시간을 긴 정 aclock수로 배치하고, 구조 newtime체로 변환한 다음, 함수를 사용하여 asctime_s 출력을 위해 문자열 형식으로 변환합니다.

// crt_asctime_s.c
#include <time.h>
#include <stdio.h>

struct tm newtime;
__time32_t aclock;

int main( void )
{
   char buffer[32];
   errno_t errNum;
   _time32( &aclock );   // Get time in seconds.
   _localtime32_s( &newtime, &aclock );   // Convert time to struct tm form.

   // Print local time as a string.

   errNum = asctime_s(buffer, 32, &newtime);
   if (errNum)
   {
       printf("Error code: %d", (int)errNum);
       return 1;
   }
   printf( "Current date and time: %s", buffer );
   return 0;
}
Current date and time: Wed May 14 15:30:17 2003

참고 항목

시간 관리
ctime_s, _ctime32_s, _ctime64_s, _wctime_s, _wctime32_s, _wctime64_s
_ftime, _ftime32, _ftime64
gmtime_s, _gmtime32_s, _gmtime64_s
localtime_s, _localtime32_s, _localtime64_s
time, _time32, _time64
_tzset