더북(TheBook)

두 번째 예로 타임 스탬프(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) 적용 여부
};
신간 소식 구독하기
뉴스레터에 가입하시고 이메일로 신간 소식을 받아 보세요.