본문 바로가기
프로그래밍/C & C++

[C] 날짜/시간 처리 함수

by 불타는홍당무 2016. 7. 7.

출처 : 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시부터 함수를 호출할 때 까지의 초 카운트

#include <stdio.h> #include <time.h> int main() { time_t current_time; time(&current_time); printf("%ldn", current_time); printf(ctime( &current_time)); return 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(&current_time); printf("%ld\n", current_time); printf(ctime(&current_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(&current_time); struct_time = localtime(&current_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(&current_time); struct_time = gmtime(&current_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