Tuesday, May 22, 2007
C언어] localtime_s 함수 사용법: 비주얼 Visual C 2005 이상에서
localtime 이라는 함수로 현재 시각을 구할 수 있지만, 비주얼C 2005 이상의 버전에서는 보안이 강화된 localtime_s 라는 함수를 사용합니다. 그렇지 않으면
이런 워닝(경고)이 나올 수 있습니다. localtime_s 는 localtime 함수와 사용법이 좀 다른데 다음 예제처럼 하면 됩니다.
소스 파일명: localtime_s.cpp
비주얼C 2005의 cl.exe 로 컴파일한 화면:
위의 소스는 비주얼C 2003 과 그 이하 버전에서는 컴파일되지 않습니다. 2003용 소스는 여기에: ▶▶ C언어] 현재 날짜/시간/년월일,시분초 구하기 함수(오늘 날짜 시간): Current Date, Time
localtime_s.cpp(11) : warning C4996: 'localtime': This function or variable may be unsafe. Consider using localtime_s instead. To disable deprecation, use _CRT_SECURE_NO_WARNINGS. See online help for details. D:\Program Files\Microsoft Visual Studio\VC\include\time.inl(114) : see declaration of 'localtime'
이런 워닝(경고)이 나올 수 있습니다. localtime_s 는 localtime 함수와 사용법이 좀 다른데 다음 예제처럼 하면 됩니다.
localtime_s 함수로 현재 날짜 시간 출력 예제 소스
소스 파일명: localtime_s.cpp
#include <stdio.h>
#include <time.h>
int main(void) {
time_t timer;
struct tm t;
timer = time(NULL); // 현재 시각을 초 단위로 얻기
localtime_s(&t, &timer); // 초 단위의 시간을 분리하여 구조체에 넣기
printf("유닉스 타임 (Unix Time): %d 초\n\n", timer); // 1970년 1월 1일 0시 0분 0초부터 시작하여 현재까지의 초
printf("현재 년: %d\n", t.tm_year + 1900);
printf("현재 월: %d\n", t.tm_mon + 1);
printf("현재 일: %d\n\n", t.tm_mday);
printf("현재 시: %d\n", t.tm_hour);
printf("현재 분: %d\n", t.tm_min);
printf("현재 초: %d\n\n", t.tm_sec);
printf("현재 요일: %d\n", t.tm_wday); // 일요일=0, 월요일=1, 화요일=2, 수요일=3, 목요일=4, 금요일=5, 토요일=6
printf("올해 몇 번째 날: %d\n", t.tm_yday); // 1월 1일은 0, 1월 2일은 1
printf("서머타임 적용 여부: %d\n", t.tm_isdst); // 0 이면 서머타임 없음
return 0;
}
#include <time.h>
int main(void) {
time_t timer;
struct tm t;
timer = time(NULL); // 현재 시각을 초 단위로 얻기
localtime_s(&t, &timer); // 초 단위의 시간을 분리하여 구조체에 넣기
printf("유닉스 타임 (Unix Time): %d 초\n\n", timer); // 1970년 1월 1일 0시 0분 0초부터 시작하여 현재까지의 초
printf("현재 년: %d\n", t.tm_year + 1900);
printf("현재 월: %d\n", t.tm_mon + 1);
printf("현재 일: %d\n\n", t.tm_mday);
printf("현재 시: %d\n", t.tm_hour);
printf("현재 분: %d\n", t.tm_min);
printf("현재 초: %d\n\n", t.tm_sec);
printf("현재 요일: %d\n", t.tm_wday); // 일요일=0, 월요일=1, 화요일=2, 수요일=3, 목요일=4, 금요일=5, 토요일=6
printf("올해 몇 번째 날: %d\n", t.tm_yday); // 1월 1일은 0, 1월 2일은 1
printf("서머타임 적용 여부: %d\n", t.tm_isdst); // 0 이면 서머타임 없음
return 0;
}
비주얼C 2005의 cl.exe 로 컴파일한 화면:
D:\Z>cl localtime_s.cpp && localtime_s.exe
localtime_s.cpp
유닉스 타임 (Unix Time): 1179811989 초
현재 년: 2007
현재 월: 5
현재 일: 22
현재 시: 14
현재 분: 33
현재 초: 9
현재 요일: 2
올해 몇 번째 날: 141
서머타임 적용 여부: 0
D:\Z>
localtime_s.cpp
유닉스 타임 (Unix Time): 1179811989 초
현재 년: 2007
현재 월: 5
현재 일: 22
현재 시: 14
현재 분: 33
현재 초: 9
현재 요일: 2
올해 몇 번째 날: 141
서머타임 적용 여부: 0
D:\Z>
위의 소스는 비주얼C 2003 과 그 이하 버전에서는 컴파일되지 않습니다. 2003용 소스는 여기에: ▶▶ C언어] 현재 날짜/시간/년월일,시분초 구하기 함수(오늘 날짜 시간): Current Date, Time
tag: cpp
C언어 | C/C++ (Visual C++)
<< Home