출처 : http://forum.falinux.com/
<time.h> 헤더 필요 (#include <time.h>)
1. 현재시간 구하기
형태 time_t time(time_t *t)
인수 time_t *t 시간정보를 받을 변수
반환 time_t 1970년 1월 1일 0시부터 함수를 호출할 때 까지의 초 카운트
|
2. 초단위 시간을 읽기 편한 문자열로 변환하기
형태 char ctime(const time_t *t)
인수 time_t *t 1970년 1월 1일 0시부터 함수를 호출할 때 까지의 초 카운트
반환 char * 초 단위의 시간을 읽기 편한 문자열로 변환한 문자열 포인터
#include <stdio.h> #include <time.h> int main() { time_t current_time; time(¤t_time); printf("%ld\n", current_time); printf(ctime(¤t_time)); return 0; }
3. time_t형 값에서 지역시간 정보 구하기
형태 struct tm *localtime(const time_t *t)
인수 time_t *t 시간 time_t 값
반환 struct tm * 시간에 대한 struct tm 값의 포인터
#include <stdio.h> #include <time.h> int main() { char *week[] = { "일", "월", "화", "수", "목", "금", "토"}; time_t current_time; struct tm *struct_time; time(¤t_time); struct_time = localtime(¤t_time); printf("%4d 년\n", struct_time->tm_year +1900); printf(" %2d 월(0-11)\n", struct_time->tm_mon +1 ); printf(" %2d 일(1-31)\n", struct_time->tm_mday ); printf("%s요일\n" , week[struct_time->tm_wday]); printf(" %2d 시(0-23)\n", struct_time->tm_hour ); printf(" %2d 분(0-59)\n", struct_time->tm_min ); printf(" %2d 초(0-59)\n", struct_time->tm_sec ); printf("1월 1일 이후의 날짜 수: %3d \n", struct_time->tm_yday); if ( 0 < struct_time->tm_isdst)
printf( "썸머 타임 사용n" ); else if ( 0 == struct_time->tm_isdst)
printf( "썸머 타임 사용 안함\n"); else
printf( "썸머 타임 사용 불가\n"); return 0; }
4. time_t형 값에서 세계 표준시간 정보 구하기
형태 struct tm *gmtime(const time_t *t)
인수 time_t *t 시간 time_t 값
반환 struct tm * 시간에 대한 struct tm 값의 포인터
#include <stdio.h> #include <time.h> int main() { char *week[] = { "일", "월", "화", "수", "목", "금", "토"}; time_t current_time; struct tm *struct_time; time(¤t_time); struct_time = gmtime(¤t_time); printf( "%4d 년\n", struct_time->tm_year +1900); printf( " %2d 월(0-11)\n", struct_time->tm_mon +1 ); printf( " %2d 일(1-31)\n", struct_time->tm_mday ); printf( "%s요일\n" , week[struct_time->tm_wday]); printf( " %2d 시(0-23)\n", struct_time->tm_hour ); printf( " %2d 분(0-59)\n", struct_time->tm_min ); printf( " %2d 초(0-59)\n", struct_time->tm_sec ); printf( "1월 1일 이후의 날짜 수: %3d \n", struct_time->tm_yday); if ( 0 < struct_time->tm_isdst)
printf( "썸머 타임 사용\n" ); else if ( 0 == struct_time->tm_isdst)
printf( "썸머 타임 사용 안함\n"); else
printf( "썸머 타임 사용 불가\n"); return 0; }
4. 날짜와 시간 문자열 구하기
형태 size_t strftime(char *restrict s, size_t maxsize, const char *restrict format, const struct tm *restrict timeptr)
인수 char *restrict s 문자열을 받을 버퍼 포인터, size_t maxsize 버퍼의 크기, const char *restrict format 날짜와 시간 정보를 나열하기 위한 문자열 포맷, const struct tm *restrict timeptr 날짜와 시간 정보
반환 size_t 문자열의 길이
#include <stdio.h> #include <time.h> #define BUFF_SIZE 1204 int main() { time_t tm_time; struct tm *st_time; char buff[BUFF_SIZE]; time(&tm_time); st_time = localtime(&tm_time); strftime(buff, BUFF_SIZE, "%Y년 %m월 %d일 - %l시 %M분 %S초 %p\n", st_time); printf(buff);
return 0; }
5. 날짜와 시간차이 구하기
형태 double difftime(time_t time1, time_t time0)
인수 time_t time1 시간 계산에서 빼어지는 시간, time_t time0 시간 계산에서 빼는 시간
반환 double 두 시간의 차이
#include <stdio.h> #include <time.h> int main() { time_t tm_st; time_t tm_nd; int tm_day, tm_hour, tm_min, tm_sec; double d_diff; struct tm user_stime; user_stime.tm_year = 2007 -1900; // 주의 :년도는 1900년부터 시작 user_stime.tm_mon = 7 -1; // 주의 :월은 0부터 시작 user_stime.tm_mday = 1; user_stime.tm_hour = 10; user_stime.tm_min = 12; user_stime.tm_sec = 55; user_stime.tm_isdst = 0; // 썸머 타임 사용 안함 tm_st = mktime(&user_stime); time(&tm_nd); d_diff = difftime(tm_nd, tm_st); tm_day = d_diff / (60 *60 * 24); d_diff = d_diff - (tm_day *60 *60 *24); tm_hour = d_diff / (60 *60); d_diff = d_diff - (tm_hour *60 *60); tm_min = d_diff / 60; d_diff = d_diff - (tm_min *60); tm_sec = d_diff; printf("2007년 7월 1일부터 지금까지는 %d일 %d시 %d분 %d초 지났음n", tm_day, tm_hour, tm_min, tm_sec);
return 0; }
'프로그래밍 > C & C++' 카테고리의 다른 글
[C++] 변수의 선언과 대입의 정확한 개념 (0) | 2019.10.16 |
---|---|
[C] 메모리 관리 함수 (0) | 2016.07.08 |
[C] 문자 처리 함수 (0) | 2016.07.06 |
[C] 포인터 (0) | 2016.03.31 |
[C] 구조체 (0) | 2016.03.27 |