두 번째 예로 타임 스탬프(time stamp)를 구성하는 방법에 대해 살펴보자. 캘린더 타임은 연, 월, 일, 분, 초 등을 복잡한 방식으로 센다. 시간 단위의 종류(예 월, 년)마다 길이도 다르다. 이런 데이터를 다루는 한 가지 방법은 바로 배열을 활용하는 것이다.
typedef int calArra[9];
▲ 그림 6-11 calArray의 구조
이렇게 배열 타입으로 정의하면 모호한 점이 생긴다. 연 단위 값을 [0]번 원소에 저장할지 아니면 [5]번 원소에 저장할지 명확하지 않다. 예전에 사용했던 enum을 활용하는 방식을 여기에도 적용해서 모호함을 제거할 수 있지만 C 표준은 좀 다른 방식을 채용했다. time.h 헤더를 보면 다음과 같이 struct를 이용하여 정의하고 있다.
struct tm { int tm_sec; // 현재 분에서 지난 초 [0, 60] int tm_min; // 현재 시로부터 지난 분 [0, 59] int tm_hour; // 자정 이후로 지난 시간 [0, 23] int tm_mday; // 이번 달에서 몇 일 [1, 31] int tm_mon; // 1월 이후로 지난 달 [0, 11] int tm_year; // 1900 이후로 지난 햇수 int tm_wday; // 일요일 이후로 지난 날 [0, 6] int tm_yday; // 1월 이후로 지난 날 [0, 365] int tm_isdst; // 일광 절약 시간제(Daylight Saving Time) 적용 여부 };