Thursday, October 05, 2006
C언어] 현재 날짜/시간/년월일,시분초 구하기 함수(오늘 날짜 시간): Current Date, Time
C언어는 날짜/시간을 구할 때 하나의 함수로만 되는 것이 아니라, 다음과 같이 약간 복잡합니다.
time() 함수로, 현재 경과된 초(sec), 즉 "유닉스 시간"을 구한 후, 그것을 localtime() 함수로 연월일 시분초로 분리하여 구조체에 저장합니다.
파일명: 0.cpp
실행 결과 화면:
time.h 에 시간 구조체가 다음과 같이 정의되어 있습니다.
업데이트: 비주얼C 2005 이상에 최적화: ▶▶ C언어] localtime_s 함수 사용법: 비주얼 Visual C 2005 이상에서
"2006-12-25 11:34:06" 형식으로 날짜 시간 출력하기: ▶▶ C언어] 현재 날짜 시간, 년월일 시분초 로 출력 함수; Time To String Function VC++
▶▶ C언어] 오늘 요일 이름 구하기, 요일명 출력; Get-Print DAY OF THE WEEK
▶▶ C언어] 올해 연도(년도) 4자리, 2자리로 구하기/출력; Current Year Format; YYYY, YY
▶▶ C언어] 어제 날짜 구하기; 전날 날짜 계산 출력 함수; Get Yesterday Date
▶▶ C언어] 내일 날짜 구하기; 다음날 날짜 계산 출력 함수; Get Tomorrow Date
▶▶ C언어] 이번달은 몇 분기? 몇 사분기 판단 함수; Quarter of the Year
▶▶ C언어, 타이머 Timer 만들기 소스; 스톱워치 Stopwatch
time() 함수로, 현재 경과된 초(sec), 즉 "유닉스 시간"을 구한 후, 그것을 localtime() 함수로 연월일 시분초로 분리하여 구조체에 저장합니다.
C에서, 오늘 시각/날짜 (현재 날짜, 시간) 출력 예제
파일명: 0.cpp
#include <stdio.h>
#include <time.h>
void main(void) {
time_t timer;
struct tm *t;
timer = time(NULL); // 현재 시각을 초 단위로 얻기
t = localtime(&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 이면 서머타임 없음
}
#include <time.h>
void main(void) {
time_t timer;
struct tm *t;
timer = time(NULL); // 현재 시각을 초 단위로 얻기
t = localtime(&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 이면 서머타임 없음
}
실행 결과 화면:
D:\Z>cl 0.cpp && 0.exe
0.cpp
유닉스 타임 (Unix Time): 1160032094 초
현재 년: 2006
현재 월: 10
현재 일: 5
현재 시: 16
현재 분: 8
현재 초: 14
현재 요일: 4
올해 몇 번째 날: 277
서머타임 적용 여부: 0
D:\Z>
0.cpp
유닉스 타임 (Unix Time): 1160032094 초
현재 년: 2006
현재 월: 10
현재 일: 5
현재 시: 16
현재 분: 8
현재 초: 14
현재 요일: 4
올해 몇 번째 날: 277
서머타임 적용 여부: 0
D:\Z>
time.h 에 시간 구조체가 다음과 같이 정의되어 있습니다.
struct tm {
int tm_sec; /* Seconds */
int tm_min; /* Minutes */
int tm_hour; /* Hour (0--23) */
int tm_mday; /* Day of month (1--31) */
int tm_mon; /* Month (0--11) */
int tm_year; /* Year (calendar year minus 1900) */
int tm_wday; /* Weekday (0--6; Sunday = 0) */
int tm_yday; /* Day of year (0--365) */
int tm_isdst; /* 0 if daylight savings time is not in effect) */
};
int tm_sec; /* Seconds */
int tm_min; /* Minutes */
int tm_hour; /* Hour (0--23) */
int tm_mday; /* Day of month (1--31) */
int tm_mon; /* Month (0--11) */
int tm_year; /* Year (calendar year minus 1900) */
int tm_wday; /* Weekday (0--6; Sunday = 0) */
int tm_yday; /* Day of year (0--365) */
int tm_isdst; /* 0 if daylight savings time is not in effect) */
};
업데이트: 비주얼C 2005 이상에 최적화: ▶▶ C언어] localtime_s 함수 사용법: 비주얼 Visual C 2005 이상에서
"2006-12-25 11:34:06" 형식으로 날짜 시간 출력하기: ▶▶ C언어] 현재 날짜 시간, 년월일 시분초 로 출력 함수; Time To String Function VC++
▶▶ C언어] 오늘 요일 이름 구하기, 요일명 출력; Get-Print DAY OF THE WEEK
▶▶ C언어] 올해 연도(년도) 4자리, 2자리로 구하기/출력; Current Year Format; YYYY, YY
▶▶ C언어] 어제 날짜 구하기; 전날 날짜 계산 출력 함수; Get Yesterday Date
▶▶ C언어] 내일 날짜 구하기; 다음날 날짜 계산 출력 함수; Get Tomorrow Date
▶▶ C언어] 이번달은 몇 분기? 몇 사분기 판단 함수; Quarter of the Year
▶▶ C언어, 타이머 Timer 만들기 소스; 스톱워치 Stopwatch
tag: cpp
C언어 | C/C++ (Visual C++)
<< Home