CTIME(3)

명칭
asctime, asctime_r, ctime, ctime_r, difftime, gmtime, gmtime_r, localtime, localtime_r, mktime, timegm - 바이너리 일자와 시각의 값을 변환한다

프로그램 라이브러리
libc

서식
<time.h> extern char *tzname[2]; char * ctime(const time_t *clock) double difftime(time_t time1, time_t time0) char * asctime(const struct tm *tm) struct tm * localtime(const time_t *clock) struct tm * gmtime(const time_t *clock) time_t mktime(struct tm *tm) time_t timegm(struct tm *tm) char * ctime_r(const time_t *clock, char *buf) struct tm * localtime_r(const time_t *clock, struct tm *result) struct tm * gmtime_r(const time_t *clock, struct tm *result) char * asctime_r(const struct tm *tm, char *buf)

해설
함수 ctime(), gmtime(), localtime() (은)는 모두, 기준 시점 (00:00:00 UTC, 1970 년 1 월 1 일 time(3) (을)를 참조) 이후의 시각 (초단위)을 나타내는 시간의 값을 인수로서 취합니다.

함수 localtime() (은)는, clock 하지만 가리킬 때 각의 값을 변환해, 현재의 시간대 ( 및 닛코 절약 시간과 같은 다른 요소) 에 조정한 후의 값에 대해 세분화된 시간 정보가 들어갔다 “struct tm” (후술)(을)를 가리키는 포인터를 돌려줍니다. 시간대 조정은, TZ 환경 변수 ( tzset(3) (을)를 참조)로 지정된 것처럼 실행됩니다. 프로세스가 tzset(3) (을)를 아직 호출하지 않은 경우, 함수 localtime() (은)는, tzset(3) (을)를 사용해, 시각 변환 정보를 초기화합니다.

구조체 tm 에 대입한 후, localtime() (은)는, tzname 의 tm_isdst 차례째의 요소를, localtime() 의 반환값과 함께 사용하는 시간대 단축형이다 ASCII 캐릭터 라인을 가리키는 포인터로 설정합니다.

함수 gmtime() (은)는, 똑같이 시각의 값을 변환합니다만, 시간대의 조정은 없고, 구조체 tm 를 가리키는 포인터를 돌려줍니다 (후술).

ctime() 함수는, localtime() (와)과 같은 방법으로 현재의 시간대의 시각치를 조정해, 다음의 형식의 26 캐릭터의 캐릭터 라인을 가리키는 포인터를 돌려줍니다.

    Thu Nov 24 18:22:48 1986\n\0

필드에는 모두 일정한 폭이 있습니다.

ctime_r() (은)는, ctime() (와)과 같은 기능입니다만, 호출원이 결과를 보존하기 위해서 출력 버퍼 buf (을)를 준비해야 한다고 하는 점은 다릅니다. 이 버퍼는 적어도 26 캐릭터의 길이일 필요가 있습니다. localtime_r() 및 gmtime_r() (은)는, 각각, localtime() 및 gmtime() (와)과 같은 기능입니다만, 호출원이 출력 버퍼 result (을)를 준비해야 한다고 하는 점은 다릅니다.

asctime() 함수는, *tm 하지만 가리키는 구조체 tm 안의 세분화된 시간을 변환해, 전술의 예에 나타낸 형식으로 합니다.

asctime_r() (은)는, asctime() (와)과 같은 기능을 갖추고 있습니다만, 호출원이 결과를 보존하기 위한 출력 버퍼 buf (을)를 준비하는 점은 다릅니다. 이 버퍼의 길이는 적어도 26 캐릭터일 필요가 있습니다.

함수 mktime() (와)과 timegm() (은)는, tm 하지만 가리키는 구조 체내의 세분화한 시간을, time(3) 함수가 돌려주는 값과 같은 encode의 시각치로 변환합니다 (즉, 기준 시점 UTC (으)로부터의 시각으로 합니다). mktime() (은)는, 현재의 시간대 설정에 따라 입력 구조체를 해석합니다 ( tzset(3) (을)를 참조). timegm() (은)는, 협정 세계시 (UTC) (을)를 나타내는 입력 구조체를 해석합니다.

구조체의 tm_wday 컴퍼넌트와 tm_yday 컴퍼넌트의 오리지날치는 무시되어 다른 컴퍼넌트의 오리지날의 값은 그 통상의 범위에 제한되지않고, 필요한 경우는 정규화됩니다. 예를 들면, 10 월 40 일은 11 월 9 일에 변환되어 tm_hour 에 -1 가 지정되면(자) 심야부터 1 시간전을 의미해, tm_mday 에 0 이 지정되면(자) 현재의 달의 직전일을 의미해, tm_mon 에 -2 가 지정되면(자) tm_year 의 1 월부터 2 개월전을 의미합니다. ( tm_isdst 하지만 정의 경우, mktime() (은)는, 초기적으로는, 지정 시간에 대해 서머타임 (예를 들어, 닛코 절약 시간) 하지만 유효하다라고 추측합니다. 0 의 경우는, 서머타임이 유효하지 않으면 상정합니다. tm_isdst 하지만 부의 값의 경우, mktime() 함수는, 지정의 시간에 대해 서머타임이 유효한지 어떤지 추측하려고 합니다. tm_isdst 멤버와 tm_gmtoff 멤버는 timegm() 에 의해 강제적으로 0 으로 됩니다).

처리가 정상적으로 완료하면(자), 구조체의 tm_wday 컴퍼넌트 및 tm_yday 컴퍼넌트의 값은 적당, 설정되어 다른 컴퍼넌트는 지정의 캘린더 시간을 나타내도록(듯이) 설정됩니다만, 값은 통상의 범위로 몰립니다. tm_mon (와)과 tm_year 하지만 결정될 때까지, tm_mday 의 최종치는 설정되지 않습니다. mktime() (은)는, 지정의 캘린더 시간을 돌려줍니다. 캘린더 시간을 나타낼 수 없다 경우는,-1 이 돌려주어집니다.

difftime() 함수는, 2 개의 캘린더 시간의 사이의 차이 (time1 - time0) (초단위)(을)를 돌려줍니다.

외부 선언과 구조체 tm 의 양쪽 모두가 <time.h> 인클루드 파일내에 있습니다. 구조체 tm 에는 적어도 다음의 필드가 인클루드 되고 있습니다.

    int tm_sec;	/* 초 (0 - 60) */
    int tm_min;	/* 분 (0 - 59) */
    int tm_hour;	/* 때 (0 - 23) */
    int tm_mday;	/* 월내일 (1 - 31) */
    int tm_mon;	/* 달 (0 - 11) */
    int tm_year;	/* 연 - 1900 */
    int tm_wday;	/* 요일 (Sunday = 0) */
    int tm_yday;	/* 연내일 (0 - 365) */
    int tm_isdst;	/* 서머타임은 유효한가 */
    char *tm_zone;	/* 시간대명의 단축형 */
    long tm_gmtoff;	/* UTC 로부터의 오프셋(offset) (초단위) */

서머타임이 유효한 경우, 필드 tm_isdst (은)는 0 이 아니게 됩니다.

필드 tm_gmtoff (은)는, UTC (으)로부터 나타내지는 시간의 오프셋(offset) (초단위)이며, 정의 값은 근본 자오선의 동쪽을 나타냅니다.

관련 항목
date(1), gettimeofday(2), getenv(3), time(3), tzset(3), tzfile(5)

표준
asctime(), ctime(), difftime(), gmtime(), localtime(), mktime() 의 각 함수는, 선택한 로컬인 시간대에 윤초테이블이 포함되지 않았다 경우만, isoC (와)과 p1003.1-96 에 적합하고 있습니다 ( zic(8) (을)를 참조).

asctime_r(), ctime_r(), gmtime_r(), localtime_r() 의 각 함수는 p1003.1-96 에 적합하고 있습니다 (여기에서도, 선택한 로컬인 시간대에 윤초테이블이 포함되지 않은 경우 뿐입니다).

timegm() 함수는, 어떠한 표준에 의해도 지정되어 있지 않습니다. 이 함수는, 상술의 표준 함수를 사용해도, 완전하게는 에뮤레이트 불가능합니다.

역사
이 메뉴얼 페이지는, Arthur Olsen 에 의해 Berkeley 에 기부된 시간 패키지에 유래하는 것으로, 이것은 4.3BSD 그리고 등장했습니다.

버그
difftime(), mktime() 및 다른 함수의 _r() (이)가 붙은 변종을 제외해, 이러한 함수는, 결과를 내부 정적 오브젝트에 남겨, 그 오브젝트를 가리키는 포인터를 돌려줍니다. 다음에 이러한 함수를 호출하면(자), 같은 오브젝트가 수정됩니다.

C 언어 표준은, 프로그램이 그 현재의 로컬 시간대 설정을 수정한다 메카니즘을 갖추고 있지않고, POSIX 표준 방식은 재입 가능하지는 않습니다 (그러나, thread 세이프 시스템이 POSIX thread 환경에는 갖춰지고 있습니다).

돌려주어진 구조체 tm 의 tm_zone 필드는, 캐릭터의 정적 배열을 가리킵니다. 이것도 후의 호출로 덧쓰기됩니다 ( tzset(3) (와)과 tzsetwall(3) 의 후의 호출에 의해 덧쓰기되는 것과 같이입니다).

외부 변수 tzname 의 사용은 추천할 수 없습니다. 구조체 tm 내의 tm_zone 엔트리를 추천합니다.