ctime(3) - wariua/manpages-ko GitHub Wiki
asctime, ctime, gmtime, localtime, mktime, asctime_r, ctime_r, gmtime_r, localtime_r - ๋ ์ง์ ์๊ฐ์ ๋ถํ ์๊ฐ์ด๋ ASCII๋ก ๋ณํํ๊ธฐ
#include <time.h>
char *asctime(const struct tm *tm);
char *asctime_r(const struct tm *tm, char *buf);
char *ctime(const time_t *timep);
char *ctime_r(const time_t *timep, char *buf);
struct tm *gmtime(const time_t *timep);
struct tm *gmtime_r(const time_t *timep, struct tm *result);
struct tm *localtime(const time_t *timep);
struct tm *localtime_r(const time_t *timep, struct tm *result);
time_t mktime(struct tm *tm);
glibc ๊ธฐ๋ฅ ํ์ธ ๋งคํฌ๋ก ์๊ฑด (feature_test_macros(7) ์ฐธ๊ณ ):
-
asctime_r()
,ctime_r()
,gmtime_r()
,localtime_r()
: -
_POSIX_C_SOURCE
|| /* glibc ๋ฒ์ <= 2.19: */ _BSD_SOURCE || _SVID_SOURCE
ctime()
, gmtime()
, localtime()
ํจ์๋ ๋ชจ๋ ๋ฌ๋ ฅ ์๊ฐ์ ๋ํ๋ด๋ ๋ฐ์ดํฐ ํ์
์ธ time_t
์ธ์๋ฅผ ๋ฐ๋๋ค. ์ ๋ ์๊ฐ ๊ฐ์ผ๋ก ํด์ํ ๋ ๊ทธ ๊ฐ์ ์ํฌํฌ, ์ฆ 1970-01-01 00:00:00 +0000 (UTC) ์ดํ๋ก ์ง๋ ์ด ์๋ฅผ ๋ํ๋ธ๋ค.
asctime()
๋ฐ mktime()
ํจ์๋ ๋ชจ๋ ๋ถํ ์๊ฐ, ์ฆ ๋
, ์, ์ผ ๋ฑ์ผ๋ก ๋๋ ์ ํํํ ์๊ฐ ์ธ์๋ฅผ ๋ฐ๋๋ค.
๋ถํ ์๊ฐ์ tm
๊ตฌ์กฐ์ฒด์ ์ ์ฅํ๋๋ฐ, ๊ทธ ๊ตฌ์กฐ์ฒด๋ <time.h>
์ ๋ค์์ฒ๋ผ ์ ์๋ผ ์๋ค.
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; /* ์ (0-11) */
int tm_year; /* ๋
- 1900 */
int tm_wday; /* ์ฃผ ์ค ๋ ๋ฒํธ (0-6, ์ผ์์ผ = 0) */
int tm_yday; /* ์ฐ ์ค ๋ ๋ฒํธ (0-365, 1์ 1์ผ = 0) */
int tm_isdst; /* ์ผ๊ด ์ ์ฝ ์๊ฐ */
};
tm
๊ตฌ์กฐ์ฒด์ ๋ฉค๋ฒ๋ ๋ค์๊ณผ ๊ฐ๋ค.
tm_sec
- ํด๋น ๋ถ ์ดํ์ ์ด ์. ๋ณดํต์ 0์์ 59๊น์ง ๋ฒ์์ง๋ง ์ค์ด๋ฅผ ์ํด 60๊น์ง๋ ๊ฐ๋ฅํ๋ค.
tm_min
- ํด๋น ์ ์ดํ์ ๋ถ ์. 0์์ 59๊น์ง ๋ฒ์.
tm_hour
- ์์ ์ดํ์ ์๊ฐ ์. 0์์ 23๊น์ง ๋ฒ์.
tm_mday
- ์ ์ค ๋ ์ง. 1์์ 31๊น์ง ๋ฒ์.
tm_mon
- 1์ ์ดํ์ ๋ฌ ์. 0์์ 11๊น์ง ๋ฒ์.
tm_year
- 1900๋ ์ดํ์ ๋ ์.
tm_wday
- ์ผ์์ผ ์ดํ์ ๋ ์. 0์์ 6๊น์ง ๋ฒ์.
tm_yday
- 1์ 1์ผ ์ดํ์ ๋ ์. 0์์ 365๊น์ง ๋ฒ์.
tm_isdst
- ๊ธฐ์ ํ ์๊ฐ์ ์ผ๊ด ์ ์ฝ ์๊ฐ์ด ์ํ ์ค์ธ์ง ์ฌ๋ถ๋ฅผ ๋ํ๋ด๋ ํ๋๊ทธ. ์ผ๊ด ์ ์ฝ ์๊ฐ์ด ์ํ ์ค์ด๋ฉด ๊ฐ์ด ์์์ด๊ณ , ์๋๋ฉด 0์ด๋ฉฐ, ๊ฐ์ฉ ์ ๋ณด๊ฐ ์์ผ๋ฉด ์์์ด๋ค.
ctime(t)
ํธ์ถ์ asctime(localtime(t))
์ ๋๋ฑํ๋ค. ๋ฌ๋ ฅ ์๊ฐ t
๋ฅผ ๋ค์ ํํ์ ๋ ์ข
๋ฃ ๋ฌธ์์ด๋ก ๋ฐ๊พผ๋ค.
"Wed Jun 30 21:49:08 1993\n"
์์ผ ์ด๋ฆ ์ค์๋ง์ "Sun", "Mon", "Tue", "Wed", "Thu", "Fri", "Sat"์ด๋ค. ์ ์ด๋ฆ ์ค์๋ง์ "Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sep", "Oct", "Nov", "Dec"์ด๋ค. ๋ฐํ ๊ฐ์ ์ ์ ์ผ๋ก ํ ๋น๋ ๋ฌธ์์ด์ ๊ฐ๋ฆฌํค๋ฉฐ ์ด์ด์ง๋ ๋ ์ง ๋ฐ ์๊ฐ ํจ์ ํธ์ถ์์ ๊ทธ ๋ฌธ์์ด์ ๋ฎ์ด ์ธ ์๋ ์๋ค. ํจ์์์๋ ๋ํ ์ธ๋ถ ๋ณ์ tzname
, timezone
, daylight
(tzset(3) ์ฐธ๊ณ )์ ํ์ฌ ์๊ฐ๋์ ๋ํ ์ ๋ณด๋ฅผ ์ค์ ํ๋ค. ์ฌ์ง์
๊ฐ๋ฅ ๋ฒ์ ์ธ ctime_r()
์์๋ ๊ฐ์ ๋์์ ํ๋ ์ฌ์ฉ์๊ฐ ์ ๊ณตํ ๋ฒํผ์ ๋ฌธ์์ด์ ์ ์ฅํ๋๋ฐ, ๊ทธ ๋ฒํผ์๋ ์ต์ 26๋ฐ์ดํธ์ ๊ณต๊ฐ์ด ์์ด์ผ ํ๋ค. tzname
, timezone
, daylight
์ ์ค์ ํ์ง ์์ ์ ์๋ค.
gmtime()
ํจ์๋ ๋ฌ๋ ฅ ์๊ฐ timep
๋ฅผ ํ์ ์ธ๊ณ์(UTC)๋ก ๋ํ๋ธ ๋ถํ ์๊ฐ ํํ์ผ๋ก ๋ณํํ๋ค. ์ฐ๋๋ฅผ ์ ์๋ก ๋ํ๋ผ ์ ์์ผ๋ฉด NULL์ ๋ฐํํ ์๋ ์๋ค. ๋ฐํ ๊ฐ์ ์ ์ ์ผ๋ก ํ ๋น๋ ๊ตฌ์กฐ์ฒด๋ฅผ ๊ฐ๋ฆฌํค๋ฉฐ ์ด์ด์ง๋ ๋ ์ง ๋ฐ ์๊ฐ ํจ์ ํธ์ถ์์ ๊ทธ ๊ตฌ์กฐ์ฒด๋ฅผ ๋ฎ์ด ์ธ ์๋ ์๋ค. gmtime_r()
ํจ์๋ ๊ฐ์ ๋์์ ํ๋ ์ฌ์ฉ์๊ฐ ์ ๊ณตํ ๊ตฌ์กฐ์ฒด์ ๋ฐ์ดํฐ๋ฅผ ์ ์ฅํ๋ค.
localtime()
ํจ์๋ ๋ฌ๋ ฅ ์๊ฐ timep
๋ฅผ ์ฌ์ฉ์ ์ง์ ์๊ฐ๋ ๊ธฐ์ค์ผ๋ก ๋ํ๋ธ ๋ถํ ์๊ฐ ํํ์ผ๋ก ๋ณํํ๋ค. ์ด ํจ์๋ tzset(3)์ ํธ์ถํ ๊ฒ์ฒ๋ผ ์์ฉํ๋ค. ์ฆ ์ธ๋ถ ๋ณ์ tzname
์ ํ์ฌ ์๊ฐ๋์ ๋ํ ์ ๋ณด๋ฅผ ์ค์ ํ๊ณ , timezone
์ ํ์ ์ธ๊ณ์(UTC)์ ์ง์ญ ํ์ค์์ ์ด ๋จ์ ์ฐจ์ด๋ฅผ ์ค์ ํ๋ฉฐ, ๊ทธ ํด์ ์ผ๋ถ ์๊ธฐ ๋์ ์ผ๊ด ์ ์ฝ ์๊ฐ ๊ท์น์ด ์ ์ฉ๋๋ ๊ฒฝ์ฐ daylight
์ 0 ์๋ ๊ฐ์ ์ค์ ํ๋ค. ๋ฐํ ๊ฐ์ ์ ์ ์ผ๋ก ํ ๋น๋ ๊ตฌ์กฐ์ฒด๋ฅผ ๊ฐ๋ฆฌํค๋ฉฐ ์ด์ด์ง๋ ๋ ์ง ๋ฐ ์๊ฐ ํจ์ ํธ์ถ์์ ๊ทธ ๊ตฌ์กฐ์ฒด๋ฅผ ๋ฎ์ด ์ธ ์๋ ์๋ค. localtime_r()
ํจ์๋ ๊ฐ์ ๋์์ ํ๋ ์ฌ์ฉ์๊ฐ ์ ๊ณตํ ๊ตฌ์กฐ์ฒด์ ๋ฐ์ดํฐ๋ฅผ ์ ์ฅํ๋ค. tzname
, timezone
, daylight
์ ์ค์ ํ์ง ์์ ์ ์๋ค.
asctime()
ํจ์๋ ๋ถํ ์๊ฐ ๊ฐ tm
์ ctime()
๊ณผ ๊ฐ์ ํ์์ ๋ ์ข
๋ฃ ๋ฌธ์์ด๋ก ๋ณํํ๋ค. ๋ฐํ ๊ฐ์ ์ ์ ์ผ๋ก ํ ๋น๋ ๋ฌธ์์ด์ ๊ฐ๋ฆฌํค๋ฉฐ ์ด์ด์ง๋ ๋ ์ง ๋ฐ ์๊ฐ ํจ์ ํธ์ถ์์ ๊ทธ ๋ฌธ์์ด์ ๋ฎ์ด ์ธ ์๋ ์๋ค. asctime_r()
ํจ์๋ ๊ฐ์ ๋์์ ํ๋ ์ฌ์ฉ์๊ฐ ์ ๊ณตํ ๋ฒํผ์ ๋ฌธ์์ด์ ์ ์ฅํ๋๋ฐ, ๊ทธ ๋ฒํผ์๋ ์ต์ 26๋ฐ์ดํธ์ ๊ณต๊ฐ์ด ์์ด์ผ ํ๋ค.
mktime()
ํจ์๋ ์ง์ญ ์๊ฐ์ผ๋ก ๋ํ๋ธ ๋ถํ ์๊ฐ ๊ตฌ์กฐ์ฒด๋ฅผ ๋ฌ๋ ฅ ์๊ฐ ํํ์ผ๋ก ๋ณํํ๋ค. ํธ์ถ์๊ฐ tm_wday
๋ฐ tm_yday
ํ๋๋ก ์ ๊ณตํ ๊ฐ์ ๋ฌด์ํ๋ค. tm_isdst
ํ๋์ ์ง์ ํ ๊ฐ์ ๊ทธ tm
๊ตฌ์กฐ์ฒด๋ก ์ ๊ณตํ๋ ์๊ฐ์ ์ผ๊ด ์ ์ฝ ์๊ฐ(DST)์ด ์ํ ์ค์ธ์ง ์ฌ๋ถ๋ฅผ mktime()
์ ์๋ ค ์ค๋ค. ์์ ๊ฐ์ DST๊ฐ ์ํ ์ค์ด๋ผ๋ ๋ป์ด๊ณ , 0์ DST๊ฐ ์ํ ์ค์ด ์๋๋ผ๋ ๋ป์ด๋ค. ๊ทธ๋ฆฌ๊ณ ์์ ๊ฐ์ ์ง์ ํ ์๊ฐ์ DST๊ฐ ์ํ ์ค์ธ์ง ์ฌ๋ถ๋ฅผ mktime()
์์ (์๊ฐ๋ ์ ๋ณด์ ์์คํ
๋ฐ์ดํฐ๋ฒ ์ด์ค๋ฅผ ์ด์ฉํด) ์์๋ด๋ ค๊ณ ํด์ผ ํ๋ค๋ ๋ป์ด๋ค.
mktime()
ํจ์์์ tm
๊ตฌ์กฐ์ฒด์ ํ๋๋ค์ ๋ณ๊ฒฝํ๋ค. tm_wday
๋ฐ tm_yday
๋ฅผ ๋ค๋ฅธ ํ๋๋ค์ ๋ด์ฉ์ผ๋ก ์์๋ธ ๊ฐ์ผ๋ก ์ค์ ํ๋ค. ๊ตฌ์กฐ์ฒด ๋ฉค๋ฒ๊ฐ ์ ํจ ๊ตฌ๊ฐ ๋ฐ์ ์์ผ๋ฉด ์ ๊ทํ ํ๋ค. (๊ทธ๋์ ๊ฐ๋ น 10์ 40์ผ์ 11์ 9์ผ๋ก ๋ฐ๋๋ค.) ๊ทธ๋ฆฌ๊ณ tm_isdst
๋ฅผ (์๋ ๊ฐ๊ณผ ์๊ด์์ด) ์ง์ ํ ์๊ฐ์ DST๊ฐ ์ํ ์ค์ธ์ง ์ฌ๋ถ๋ฅผ ๋ํ๋ด๋๋ก ์์ ๊ฐ ๋๋ 0์ผ๋ก ์ค์ ํ๋ค. ๋ํ mktime()
์์๋ ์ธ๋ถ ๋ณ์ tzname
์ ํ์ฌ ์๊ฐ๋์ ๋ํ ์ ๋ณด๋ก ์ค์ ํ๋ค.
์ง์ ํ ๋ถํ ์๊ฐ์ ๋ฌ๋ ฅ ์๊ฐ(์ํฌํฌ ์ดํ ์ด)์ผ๋ก ๋ํ๋ผ ์ ์๋ ๊ฒฝ์ฐ mktime()
์ (time_t) -1
์ ๋ฐํํ๋ฉฐ ๋ถํ ์๊ฐ ๊ตฌ์กฐ์ฒด์ ๋ฉค๋ฒ๋ค์ ๋ณ๊ฒฝํ์ง ์๋๋ค.
์ฑ๊ณต ์ gmtime()
๋ฐ localtime()
์ struct tm
ํฌ์ธํฐ๋ฅผ ๋ฐํํ๋ค.
์ฑ๊ณต ์ gmtime_r()
๋ฐ localtime_r()
์ result
๊ฐ ๊ฐ๋ฆฌํค๋ ๊ตฌ์กฐ์ฒด์ ์ฃผ์๋ฅผ ๋ฐํํ๋ค.
์ฑ๊ณต ์ asctime()
๋ฐ ctime()
์ ๋ฌธ์์ด ํฌ์ธํฐ๋ฅผ ๋ฐํํ๋ค.
์ฑ๊ณต ์ asctime_r()
๋ฐ ctime_r()
์ buf
๊ฐ ๊ฐ๋ฆฌํค๋ ๋ฌธ์์ด์ ๋ํ ํฌ์ธํฐ๋ฅผ ๋ฐํํ๋ค.
์ฑ๊ณต ์ mktime()
์ time_t
ํ์
๊ฐ์ผ๋ก ํํํ ๋ฌ๋ ฅ ์๊ฐ(์ํฌํฌ ์ดํ ์ด ์)์ ๋ฐํํ๋ค.
์ค๋ฅ ์ mktime()
์ (time_t) -1
๊ฐ์ ๋ฐํํ๋ค. ๋๋จธ์ง ํจ์๋ค์ ์ค๋ฅ ์ NULL์ ๋ฐํํ๋ค. ์ค๋ฅ ์ ์ค๋ฅ ์์ธ์ ๋ํ๋ด๋๋ก errno
๋ฅผ ์ค์ ํ๋ค.
EOVERFLOW
- ๊ฒฐ๊ณผ๋ฅผ ํํํ ์ ์๋ค.
์ด ์ ์์ ์ฌ์ฉํ๋ ์ฉ์ด๋ค์ ๋ํ ์ค๋ช ์ attributes(7)๋ฅผ ๋ณด๋ผ.
์ธํฐํ์ด์ค | ์์ฑ | ๊ฐ |
---|---|---|
asctime() |
์ค๋ ๋ ์์ ์ฑ | MT-Unsafe race:asctime locale |
asctime_r() |
์ค๋ ๋ ์์ ์ฑ | MT-Safe locale |
ctime() |
์ค๋ ๋ ์์ ์ฑ | MT-Unsafe race:tmbuf race:asctime env locale |
ctime_r() ,gmtime_r() ,localtime_r() ,mktime()
|
์ค๋ ๋ ์์ ์ฑ | MT-Safe env locale |
gmtime() ,localtime()
|
์ค๋ ๋ ์์ ์ฑ | MT-Unsafe race:tmbuf env locale |
POSIX.1-2001. C89 ๋ฐ C99์์ asctime()
, ctime()
, gmtime()
, localtime()
, mktime()
์ ๋ช
์ธํ๊ณ ์๋ค. POSIX.1-2008์์ asctime()
, asctime_r()
, ctime()
, ctime_r()
์ ๊ตฌ์์ผ๋ก ํ์ํ๊ณ ๋์ strftime(3)์ ์ฐ๊ธฐ๋ฅผ ๊ถํ๊ณ ์๋ค.
๋ค ํจ์ asctime()
, ctime()
, gmtime()
, localtime()
์ ์ ์ ๋ฐ์ดํฐ์ ๋ํ ํฌ์ธํฐ๋ฅผ ๋ฐํํ๋ฏ๋ก ์ค๋ ๋ ์์ ์ด ์๋๋ค. ์ค๋ ๋ ์์ ๋ฒ์ ์ธ asctime_r()
, ctime_r()
, gmtime_r()
, localtime_r()
์ SUSv2์์ ๋ช
์ธํ๋ค.
POSIX.1-2001: "asctime()
, ctime()
, gmtime()
, localtime()
ํจ์๋ ๋ ๊ฐ์ง ์ ์ ๊ฐ์ฒด, ์ฆ ๋ถํ ์๊ฐ ๊ตฌ์กฐ์ฒด์ char
ํ์
๋ฐฐ์ด ์ค ํ๋๋ก ๊ฐ์ ๋ฐํํด์ผ ํ๋ค. ์ด ํจ์๋ค ์ค ์ด๋ ๊ฒ์ ์คํํ๋ ๋ค๋ฅธ ์ด๋ ํจ์์์ ๊ทธ ๊ฐ์ฒด๋ค ์ค ์ด๋ ๊ฒ์ผ๋ก๋ ๋ฐํํ ์ ๋ณด๋ฅผ ๋ฎ์ด ์ธ ์ ์๋ค." glibc ๊ตฌํ์์๋ ๊ทธ๋ด ์ ์๋ค.
glibc๋ฅผ ํฌํจํ ์ฌ๋ฌ ๊ตฌํ์ฒด์์๋ tm_mday
์ 0 ๊ฐ์ ์ ๋ฌ ๋ง์ง๋ง ๋ ์ ๋ปํ๋ ๊ฒ์ผ๋ก ํด์ํ๋ค.
<time.h>
๋ฅผ ํฌํจํ๊ธฐ ์ ์ _BSD_SOURCE
๊ฐ ์ค์ ๋ผ ์์ผ๋ฉด glibc ๋ฒ์ struct tm
์๋ ๋ค์ ํ๋๊ฐ ์ถ๊ฐ๋ก ์ ์๋๋ค.
const char *tm_zone; /* ์๊ฐ๋ ์ถ์ฝ๋ช
*/
์ด๋ 4.3BSD-Reno์ ์กด์ฌํ๋ BSD ํ์ฅ์ด๋ค.
POSIX.1-2004์ ๋ฐ๋ฅด๋ฉด localtime()
์ tzset(3)์ด ํธ์ถ๋ ๊ฒ์ฒ๋ผ ๋์ํด์ผ ํ๋ ๋ฐ๋ฉด localtime_r()
์๋ ๊ทธ๋ฐ ์๊ตฌ ์ฌํญ์ด ์๋ค. ์ด์ ๊ฐ๋ฅํ ์ฝ๋์์๋ localtime_r()
์ ์์ tzset(3)์ ํธ์ถํ๋ ๊ฒ ์ข๋ค.
date(1)
, gettimeofday(2), time(2), utime(2), clock(3), difftime(3), strftime(3), strptime(3), timegm(3), tzset(3), time(7)
2019-03-06