더북(TheBook)

struct tm은 시간에 대한 부가 정보를 제공하기 위해 다음과 같은 멤버도 추가로 제공한다.

tm_wday: 요일을 표현한다.

tm_yday: 현재 연도의 몇 번째 날인지 표현한다.

tm_isdst: 현지 시간대의 DST(Daylight Saving Time)(즉 일광 절약 시간제 또는 서머타임)의 적용 여부를 표현하는 플래그다.

mktime 함수를 이용하면 이런 멤버에 대한 일관성을 보장할 수 있다. 이 함수는 다음과 같이 세 단계로 실행된다.

1. 계층적 날짜 멤버를 각각에 적합한 범위에 맞게 정규화한다.

2. tm_wdaytm_yday에 적합한 값을 설정한다.

3. tm_isday 값이 음수일 때, 현재 플랫폼의 시간대에서 DST가 적용되면 1로 수정하고 그렇지 않으면 0으로 지정한다.

mktime은 다른 용도로도 사용한다. 이 함수는 시각을 time_t 타입으로 리턴한다. time_tstruct tm처럼 달력 시간을 표현하면서도 산술 타입으로 정의되어 있어서 time_t 타입으로 계산하는 것이 보다 적합하다. 연산은 선형 시간 단위로 처리된다. time_t의 값 0은 C 언어에서 에포크(epoch)C라고 하는데, 이 값은 대체로 1970년 1월 1일에 해당한다.

time_t는 대부분 초(second) 단위로 표현하지만 항상 그런 것은 아니다. 간혹 이와 다른 단위로 시간을 기록하는 특수 레지스터가 장착된 프로세서도 있다. difftime은 주어진 두 time_t 값의 차를 double 타입의 초 단위 값으로 변환한다.

신간 소식 구독하기
뉴스레터에 가입하시고 이메일로 신간 소식을 받아 보세요.