리눅스에서 년, 월, 일, 시, 분, 초 로 나타내는 함수로
time, localtime 있다.
#include <time.h>
struct tm *localtime(const time_t *timep);
|
timep 를 입력받아서 유저 시스템의 time zone 에 맞도록
시간 값을 돌려준다. 시간 값은 tm 구조체에 들어간다.
tm 구조체는 다음과 같은 멤버 변수들을 포함한다.
struct tm { int tm_sec; /* 초 */ int tm_min; /* 분 */ int tm_hour; /* 시간 */ int tm_mday; /* 일/월 */ int tm_mon; /* 월 */ int tm_year; /* 년 */ int tm_wday; /* 일/주 */ int tm_yday; /* 일/년 */ int tm_isdst; /* 섬마타임 */ };
|
월은 0부터 시작한다. 그러므로 프로그램상에서 제대로 표현하려면 +1을
해주어야 한다. 또한 년의 경우에는 +1900 해주어야 한다.
아규먼트로 들어가는 timeptr 은 1970년 1월 1일 00:00:00 부터의
계산하고픈 때까지의 시간의 차이를 초로 환산한 값이다.
#include <time.h>
#include <stdio.h> #include <sys/types.h> #include <unistd.h>
void swaptime(time_t, char *); int main() { char buffer[255]; time_t the_time;
// time 함수를 이용해서 현재 시간을 얻어온다. time(&the_time);
memset(buffer, 0x00, 255); swaptime(the_time, buffer); printf("%sn", buffer); }
void swaptime(time_t org_time, char *time_str) { struct tm *tm_ptr; tm_ptr = localtime(&org_time);
sprintf(time_str, "%d-%d-%d %d:%d:%d", tm_ptr->tm_year+1900, tm_ptr->tm_mon+1, tm_ptr->tm_mday, tm_ptr->tm_hour, tm_ptr->tm_min, tm_ptr->tm_sec);
}
|
위 프로그램을 컴파일한다음 실행시키면 다음과 같은 결과를 보여줄것이다.
[root@localhost test]# ./localtime
2002-8-23 18:18:32
출처 : http://www.joinc.co.kr/modules/moniwiki/wiki.php/man/3/localtime
Tags: TIME, localtime