time.h 을 Include
time_t time( time_t *timer );
char *ctime( const time_t *timer );
#include <Turboc.h>
void main()
{
time_t t;
time(&t);
printf("현재 시간은 %s입니다.\n",ctime(&t));;
}
현재 시간은 Sun Sep 05 03:35:27 2004
입니다.
#include <Turboc.h>
void main()
{
char Date[10];
char Time[10];
_strdate(Date);
_strtime(Time);
printf("날짜 : %s, 시간 : %s\n",Date,Time);
}
날짜 : 09/06/04, 시간 : 16:35:42" 이렇다
시간 구조체
struct tm *gmtime(const time_t *timer);
struct tm *localtime(const time_t *timer);
time_t mktime(struct tm *timeptr);
gmtime은 세계 표준시
Localtime은 지역시간
두 함수 모두 tm 구조체로 반환
struct tm {
int tm_sec; /* seconds after the minute - [0,59] */
int tm_min; /* minutes after the hour - [0,59] */
int tm_hour; /* hours since midnight - [0,23] */
int tm_mday; /* day of the month - [1,31] */
int tm_mon; /* months since January - [0,11] */
int tm_year; /* years since 1900 */
int tm_wday; /* days since Sunday - [0,6] */
int tm_yday; /* days since January 1 - [0,365] */
int tm_isdst; /* daylight savings time flag */
};
멤버 | 설명 |
tm_sec | 초(0~59) |
tm_min | 분(0~59) |
tm_hour | 시간(0~23) |
tm_mday | 날짜(1~31) |
tm_mon | 월(0~11) |
tm_year | 1990년 이후 경과 년수 |
tm_wday | 요일(0~6). 0이 일요일 |
tm_yday | 년중 날짜(0~365) |
tm_isdst | 일광 절약 시간과의 차 |
#include <Turboc.h>
void main()
{
time_t t;
tm *pt;
time(&t);
pt=localtime(&t);
printf("현재 시간 %d년 %d월 %d일 %d시 %d분 %d초입니다.\n",
pt->tm_year+1900,pt->tm_mon+1,pt->tm_mday,
pt->tm_hour,pt->tm_min,pt->tm_sec);;
}
char *asctime(const struct tm *timeptr);
size_t strftime(char *strDest, size_t maxsize, const char *format, const struct tm *timeptr);
strtime
시간을 다양한 방식으로 포맷팅하는데 첫 번째 인수로 버퍼, 두 번째 인수로 버퍼의 길이, 세 번째 인수로 포맷팅 방식, 네 번째 인수로 tm 구조체를 준다. 세 번째 인수에 포맷팅 서식을 어떻게 지정하는가에 따라 시간을 다양한 형식의 문자열로 바꿀 수 있다.
#include <Turboc.h>
void main()
{
time_t t;
char Format[128];
time(&t);
strftime(Format,128,"%Y %B %d %A %I:%M:%S %p",localtime(&t));
puts(Format);
}
%Y는 년도, %B는 달의 영문 이름, %d는 날짜이다.
2004 September 06 Monday 04:32:52 PM
clock_t clock( void );
lock_t 타입은 long형으로 정의되어 있으며 이 함수가 조사한 값을 CLOCKS_PER_SEC으로 나누면 프로그램 실행 후의 경과 초를 알 수 있다. 이 값은 시스템에 따라 다른데 윈도우즈에서는 1000으로 정의되어 있다.
typedef long clock_t;
#define CLOCKS_PER_SEC 1000
#include <Turboc.h>
void main()
{
clock_t t1,t2;
int count=0;
t1=clock();
for (;;) {
printf("기다리십시오. %d\n",count++);
t2=clock();
if (t2-t1 > 3*CLOCKS_PER_SEC) {
break;
}
}
printf("끝났습니다.\n");
}
다음 함수는 두 시간값의 차를 구해준다.
double difftime(time_t timer1, time_t timer0);
예 제 : difftime |
#include <Turboc.h>
#include <math.h>
void main()
{
int i;
time_t t1,t2;
time(&t1);
for (i=0;i<100000;i++) {
printf("결과 = %f\n",sin(i*3.1416/180) * cos(i*3.1416/180));
}
time(&t2);
printf("총 %.2f초가 걸렸습니다.",difftime(t2,t1));
}
실수형을 리턴하는 것으로 되어 있지만 계산 결과가 초단위로 되어 있기 때문에 정밀한 시간 계산이나 코드의 성능 측정 등에 쓰기에는 무리가 있다.