이 그림을 보면 time_t에서 struct tm으로 역변환하는 함수가 두 개 있다.
• localtime_s: 현지 시각을 분리된 형태로 저장한다.
• gmtime_s: UTC(협정 세계시) 단위로 표현한 분리된 시각을 저장한다.
앞에 나왔듯이 변환할 때 가정하는 시간대가 서로 다르다. 일반적으로 localtime_s와 mktime은 서로 역함수 관계여야 한다. 반면, gmtime_s에 대응하는 역함수는 없다.
달력 시간에 대한 텍스트 표현도 제공한다. asctime_s는 날짜를 로케일이나 언어나 플랫폼에 독립적인 고정 서식으로 저장한다(단, 영어 약자를 사용한다). 서식은 다음과 같은 스트링으로 구성된다.
"Www Mmm DD HH:MM:SS YYYY\n"
strftime은 이보다 유연하며, 서식 지정자로 텍스트 표현을 구성하는 기능도 있다.
이 함수의 작동 방식은 printf 계열 함수와 비슷하지만, 표 8-13에서 볼 수 있듯이 날짜와 시각을 표현하는 %-코드 형식을 제공하는 점이 다르다. 이 표를 보면 ‘로케일’ 열은 선호 언어, 시간대와 같은 다양한 환경 설정에 따라 결과가 달라질 수 있음을 표현한 것이다. 이런 값을 읽고 쓰는 방법에 대해서는 8.6절에서 자세히 소개한다. strftime은 세 가지 배열을 인수로 받는다. 결과 스트링을 담을 char[max] 배열과 서식을 담은 스트링, 표현할 시각을 담은 struct tm const[1]이 있다. 이렇게 인수를 배열로 전달하는 이유는 포인터를 제대로 배우고 나면 이해할 수 있을 것이다.