getdate(3) - wariua/manpages-ko GitHub Wiki

NAME

getdate, getdate_r - ๋‚ ์งœ-์‹œ๊ฐ„ ๋ฌธ์ž์—ด์„ ๋ถ„ํ•  ์‹œ๊ฐ„์œผ๋กœ ๋ณ€ํ™˜ํ•˜๊ธฐ

SYNOPSIS

#include <time.h>

struct tm *getdate(const char *string);

extern int getdate_err;

#include <time.h>

int getdate_r(const char *string, struct tm *res);

glibc ๊ธฐ๋Šฅ ํ™•์ธ ๋งคํฌ๋กœ ์š”๊ฑด (feature_test_macros(7) ์ฐธ๊ณ ):

getdate():
_XOPEN_SOURCE >= 500
getdate_r():
_GNU_SOURCE

DESCRIPTION

getdate() ํ•จ์ˆ˜๋Š” string์ด ๊ฐ€๋ฆฌํ‚ค๋Š” ๋ฒ„ํผ์— ๋‹ด๊ธด ๋‚ ์งœ ๋ฐ ์‹œ๊ฐ„ ๋ฌธ์ž์—ด ํ‘œํ˜„์„ ๋ถ„ํ•  ์‹œ๊ฐ„์œผ๋กœ ๋ณ€ํ™˜ํ•œ๋‹ค. ๋ถ„ํ•  ์‹œ๊ฐ„์„ tm ๊ตฌ์กฐ์ฒด์— ์ €์žฅํ•ด์„œ ๊ทธ ๊ตฌ์กฐ์ฒด์— ๋Œ€ํ•œ ํฌ์ธํ„ฐ๋ฅผ ํ•จ์ˆ˜ ๊ฒฐ๊ณผ๋กœ ๋ฐ˜ํ™˜ํ•œ๋‹ค. ๊ทธ tm ๊ตฌ์กฐ์ฒด๋Š” ์ •์  ์ €์žฅ ๊ณต๊ฐ„์— ํ• ๋‹น๋ผ ์žˆ์œผ๋ฏ€๋กœ ์ด์–ด์„œ getdate()๋ฅผ ๋˜ ํ˜ธ์ถœํ•˜๋ฉด ๋ฎ์–ด ์จ์ง€๊ฒŒ ๋œ๋‹ค.

(format ์ธ์ž๊ฐ€ ์žˆ๋Š”) strptime(3)๊ณผ ๋‹ฌ๋ฆฌ getdate()์—์„œ๋Š” ํŒŒ์ผ์—์„œ ์–ป์€ ํ˜•์‹๋“ค์„ ์‚ฌ์šฉํ•œ๋‹ค. ๊ทธ ํŒŒ์ผ์˜ ์ „์ฒด ๊ฒฝ๋กœ๋ช…์„ ํ™˜๊ฒฝ ๋ณ€์ˆ˜ DATEMSK๋กœ ๋ฐ›๋Š”๋‹ค. ์ฃผ์–ด์ง„ ์ž…๋ ฅ ๋ฌธ์ž์—ด์— ๋งž๋Š” ํŒŒ์ผ ๋‚ด์˜ ์ฒซ ํ–‰์„ ๋ณ€ํ™˜์— ์“ด๋‹ค.

๋งž๋Š”์ง€ ํ™•์ธํ•  ๋•Œ ๋Œ€์†Œ๋ฌธ์ž๋ฅผ ๋ฌด์‹œํ•œ๋‹ค. ํŒจํ„ด์ด๋‚˜ ๋ณ€ํ™˜ํ•  ๋ฌธ์ž์—ด ๋‚ด์˜ ์ž‰์—ฌ ๊ณต๋ฐฑ์€ ๋ฌด์‹œํ•œ๋‹ค.

strptime(3)์˜ ๋ณ€ํ™˜ ์ง€์ • ํ•ญ๋ชฉ๋“ค์ด ํŒจํ„ด์— ํฌํ•จ๋  ์ˆ˜ ์žˆ๋‹ค. POSIX.1-2001์—๋Š” ๋ณ€ํ™˜ ์ง€์ • ํ•ญ๋ชฉ ํ•œ ๊ฐ€์ง€๊ฐ€ ์ถ”๊ฐ€๋กœ ๋ช…์„ธ๋ผ ์žˆ๋‹ค.

%Z ์‹œ๊ฐ„๋Œ€ ์ด๋ฆ„. glibc์—๋Š” ๊ตฌํ˜„๋ผ ์žˆ์ง€ ์•Š์Œ.

%Z๊ฐ€ ์žˆ์œผ๋ฉด ๋ถ„ํ•  ์‹œ๊ฐ„์„ ๋‹ด๋Š” ๊ตฌ์กฐ์ฒด๋ฅผ ์ฃผ์–ด์ง„ ์‹œ๊ฐ„๋Œ€์˜ ํ˜„์žฌ ์‹œ๊ฐ„์— ํ•ด๋‹นํ•˜๋Š” ๊ฐ’๋“ค๋กœ ์ดˆ๊ธฐํ™” ํ•œ๋‹ค. ์•„๋‹ˆ๋ฉด ๊ตฌ์กฐ์ฒด๋ฅผ (localtime(3)์„ ํ˜ธ์ถœํ•œ ๊ฒƒ์ฒ˜๋Ÿผ) ํ˜„์žฌ ์ง€์—ญ ์‹œ๊ฐ„์— ํ•ด๋‹นํ•˜๋Š” ๋ถ„ํ•  ์‹œ๊ฐ„์œผ๋กœ ์ดˆ๊ธฐํ™” ํ•œ๋‹ค.

์ฃผ ์ค‘ ๋‚  ๋ฒˆํ˜ธ๋งŒ ์žˆ๋Š” ๊ฒฝ์šฐ์—๋Š” ๊ทธ ๋‚ ์„ ์˜ค๋Š˜์ด๋‚˜ ์ดํ›„์˜ ์ฒซ ํ•ด๋‹น ๋‚ ๋กœ ๋ฐ›๋Š”๋‹ค.

์›”๋งŒ ์žˆ๋Š” (๋…„์€ ์—†๋Š”) ๊ฒฝ์šฐ์—๋Š” ๊ทธ ๋‹ฌ์„ ๊ธˆ์›”์ด๋‚˜ ์ดํ›„์˜ ์ฒซ ํ•ด๋‹น ๋‹ฌ๋กœ ๋ฐ›๋Š”๋‹ค.

์‹œ๋ถ„์ดˆ๊ฐ€ ์—†๋Š” ๊ฒฝ์šฐ์—๋Š” ํ˜„์žฌ ์‹œ๋ถ„์ดˆ๋ฅผ ์“ด๋‹ค.

๋‚ ์งœ๊ฐ€ ์—†์ง€๋งŒ ์‹œ๊ฐ„์€ ์•„๋Š” ๊ฒฝ์šฐ์—๋Š” ๊ทธ ์‹œ๊ฐ„์„ ํ˜„์žฌ ์‹œ๊ฐ„์ด๋‚˜ ์ดํ›„์˜ ์ฒซ ํ•ด๋‹น ์‹œ๊ฐ„์œผ๋กœ ๋ฐ›๋Š”๋‹ค.

getdate_r()์€ getdate()์˜ ์žฌ์ง„์ž… ๊ฐ€๋Šฅ ๋ฒ„์ „์„ ์ œ๊ณตํ•˜๋Š” GNU ํ™•์žฅ์ด๋‹ค. ์ „์—ญ ๋ณ€์ˆ˜๋กœ ์˜ค๋ฅ˜๋ฅผ ๋ณด๊ณ ํ•˜๊ณ  ์ •์  ๋ฒ„ํผ๋กœ ๋ถ„ํ•  ์‹œ๊ฐ„์„ ๋ฐ˜ํ™˜ํ•˜๋Š” ๋Œ€์‹  ํ•จ์ˆ˜ ๋ฐ˜ํ™˜ ๊ฐ’์„ ํ†ตํ•ด ์˜ค๋ฅ˜๋ฅผ ๋ฐ˜ํ™˜ํ•˜๊ณ  res ์ธ์ž๊ฐ€ ๊ฐ€๋ฆฌํ‚ค๋Š” ํ˜ธ์ถœ์ž ํ• ๋‹น ๋ฒ„ํผ๋กœ ๊ฒฐ๊ณผ ๋ถ„ํ•  ์‹œ๊ฐ„์„ ๋ฐ˜ํ™˜ํ•œ๋‹ค.

RETURN VALUE

์„ฑ๊ณต ์‹œ getdate()๋Š” struct tm์— ๋Œ€ํ•œ ํฌ์ธํ„ฐ๋ฅผ ๋ฐ˜ํ™˜ํ•œ๋‹ค. ์•„๋‹ˆ๋ฉด NULL์„ ๋ฐ˜ํ™˜ํ•˜๋ฉฐ ์ „์—ญ ๋ณ€์ˆ˜ getdate_err๋ฅผ ์•„๋ž˜ ์žˆ๋Š” ์˜ค๋ฅ˜ ๋ฒˆํ˜ธ๋“ค ์ค‘ ํ•˜๋‚˜๋กœ ์„ค์ •ํ•œ๋‹ค. errno ๋ณ€ํ™”์— ๋Œ€ํ•ด์„  ๋ช…์„ธ๋ผ ์žˆ์ง€ ์•Š๋‹ค.

์„ฑ๊ณต ์‹œ getdate_r()์€ 0์„ ๋ฐ˜ํ™˜ํ•œ๋‹ค. ์˜ค๋ฅ˜ ์‹œ ์•„๋ž˜ ์žˆ๋Š” ์˜ค๋ฅ˜ ๋ฒˆํ˜ธ๋“ค ์ค‘ ํ•˜๋‚˜๋ฅผ ๋ฐ˜ํ™˜ํ•œ๋‹ค.

ERRORS

getdate_err๋ฅผ ํ†ตํ•ด์„œ (getdate()), ๋˜๋Š” ํ•จ์ˆ˜ ๊ฒฐ๊ณผ๋ฅผ ํ†ตํ•ด์„œ (getdate_r()) ๋‹ค์Œ ์˜ค๋ฅ˜๋ฅผ ๋ฐ˜ํ™˜ํ•œ๋‹ค.

1 DATEMSK ํ™˜๊ฒฝ ๋ณ€์ˆ˜๊ฐ€ ์ •์˜๋ผ ์žˆ์ง€ ์•Š๊ฑฐ๋‚˜ ๊ทธ ๊ฐ’์ด ๋นˆ ๋ฌธ์ž์—ด์ด๋‹ค.
2 DATEMSK์— ์ง€์ •๋œ ํ…œํ”Œ๋ฆฟ ํŒŒ์ผ์„ ์ฝ๊ธฐ์šฉ์œผ๋กœ ์—ด ์ˆ˜ ์—†๋‹ค.
3 ํŒŒ์ผ ์ƒํƒœ ์ •๋ณด๋ฅผ ์–ป๋Š” ๋ฐ ์‹คํŒจํ–ˆ๋‹ค.
4 ํ…œํ”Œ๋ฆฟ ํŒŒ์ผ์ด ์ •๊ทœ ํŒŒ์ผ์ด ์•„๋‹ˆ๋‹ค.
5 ํ…œํ”Œ๋ฆฟ ํŒŒ์ผ์„ ์ฝ๋Š” ์ค‘ ์˜ค๋ฅ˜๋ฅผ ๋งŒ๋‚ฌ๋‹ค.
6 ๋ฉ”๋ชจ๋ฆฌ ํ• ๋‹น์— ์‹คํŒจํ–ˆ๋‹ค. (๊ฐ€์šฉ ๋ฉ”๋ชจ๋ฆฌ๊ฐ€ ์ถฉ๋ถ„์น˜ ์•Š๋‹ค.)
7 ์ž…๋ ฅ์— ์ผ์น˜ํ•˜๋Š” ํ–‰์ด ํŒŒ์ผ์— ์—†๋‹ค.
8 ์ž…๋ ฅ ์ง€์ • ํ•ญ๋ชฉ์ด ์œ ํšจํ•˜์ง€ ์•Š๋‹ค.

ENVIRONMENT

DATEMSK
์„œ์‹ ํŒจํ„ด์„ ๋‹ด์€ ํŒŒ์ผ.
TZ, LC_TIME
strptime(3)์—์„œ ์“ฐ๋Š” ๋ณ€์ˆ˜๋“ค.

ATTRIBUTES

์ด ์ ˆ์—์„œ ์‚ฌ์šฉํ•˜๋Š” ์šฉ์–ด๋“ค์— ๋Œ€ํ•œ ์„ค๋ช…์€ attributes(7)๋ฅผ ๋ณด๋ผ.

์ธํ„ฐํŽ˜์ด์Šค ์†์„ฑ ๊ฐ’
getdate() ์Šค๋ ˆ๋“œ ์•ˆ์ „์„ฑ MT-Unsafe race:getdate env locale
getdate_r() ์Šค๋ ˆ๋“œ ์•ˆ์ „์„ฑ MT-Safe env locale

CONFORMING TO

POSIX.1-2001, POSIX.1-2008.

NOTES

POSIX.1์˜ strptime(3) ๋ช…์„ธ์—๋Š” %E ๋ฐ %O ์ˆ˜์‹์ž๋ฅผ ์ด์šฉํ•œ ๋ณ€ํ™˜ ์ง€์ • ํ•ญ๋ชฉ์ด ์žˆ์ง€๋งŒ getdate()์—๋Š” ๊ทธ๋Ÿฐ ์ง€์ • ํ•ญ๋ชฉ์ด ์—†๋‹ค. glibc์—์„œ๋Š” getptime(3)์œผ๋กœ getdate()๋ฅผ ๊ตฌํ˜„ํ•˜๊ณ  ์žˆ์œผ๋ฉฐ, ๊ทธ๋ž˜์„œ ์–‘์ชฝ์—์„œ ์ •ํ™•ํžˆ ๊ฐ™์€ ๋ณ€ํ™˜๋“ค์„ ์ง€์›ํ•œ๋‹ค.

EXAMPLE

์•„๋ž˜ ํ”„๋กœ๊ทธ๋žจ์—์„œ๋Š” ๋ช…๋ นํ–‰ ์ธ์ž ๊ฐ๊ฐ์— ๋Œ€ํ•ด getdate()๋ฅผ ํ˜ธ์ถœํ•˜๊ณ  ๊ฐ ํ˜ธ์ถœ๋งˆ๋‹ค ๋ฐ˜ํ™˜๋œ tm ๊ตฌ์กฐ์ฒด์˜ ํ•„๋“œ ๊ฐ’๋“ค์„ ํ‘œ์‹œํ•œ๋‹ค. ๋‹ค์Œ ์…ธ ์„ธ์…˜์€ ํ”„๋กœ๊ทธ๋žจ ์‚ฌ์šฉ ๋ฐฉ์‹์„ ๋ณด์—ฌ ์ค€๋‹ค.

$ TFILE=$PWD/tfile
$ echo '%A' > $TFILE       # ์ฃผ ์ค‘ ๋‚ ์งœ ์ด๋ฆ„
$ echo '%T' >> $TFILE      # ISO ๋‚ ์งœ (YYYY-MM-DD)
$ echo '%F' >> $TFILE      # ์‹œ๊ฐ„ (HH:MM:SS)
$ date
$ export DATEMSK=$TFILE
$ ./a.out Tuesday '2009-12-28' '12:22:33'
Sun Sep  7 06:03:36 CEST 2008
Call 1 ("Tuesday") succeeded:
    tm_sec   = 36
    tm_min   = 3
    tm_hour  = 6
    tm_mday  = 9
    tm_mon   = 8
    tm_year  = 108
    tm_wday  = 2
    tm_yday  = 252
    tm_isdst = 1
Call 2 ("2009-12-28") succeeded:
    tm_sec   = 36
    tm_min   = 3
    tm_hour  = 6
    tm_mday  = 28
    tm_mon   = 11
    tm_year  = 109
    tm_wday  = 1
    tm_yday  = 361
    tm_isdst = 0
Call 3 ("12:22:33") succeeded:
    tm_sec   = 33
    tm_min   = 22
    tm_hour  = 12
    tm_mday  = 7
    tm_mon   = 8
    tm_year  = 108
    tm_wday  = 0
    tm_yday  = 250
    tm_isdst = 1

ํ”„๋กœ๊ทธ๋žจ ์†Œ์Šค

#define _GNU_SOURCE
#include <time.h>
#include <stdio.h>
#include <stdlib.h>

int
main(int argc, char *argv[])
{
    struct tm *tmp;
    int j;

    for (j = 1; j < argc; j++) {
        tmp = getdate(argv[j]);

        if (tmp == NULL) {
            printf("Call %d failed; getdate_err = %d\n",
                   j, getdate_err);
            continue;
        }

        printf("Call %d (\"%s\") succeeded:\n", j, argv[j]);
        printf("    tm_sec   = %d\n", tmp->tm_sec);
        printf("    tm_min   = %d\n", tmp->tm_min);
        printf("    tm_hour  = %d\n", tmp->tm_hour);
        printf("    tm_mday  = %d\n", tmp->tm_mday);
        printf("    tm_mon   = %d\n", tmp->tm_mon);
        printf("    tm_year  = %d\n", tmp->tm_year);
        printf("    tm_wday  = %d\n", tmp->tm_wday);
        printf("    tm_yday  = %d\n", tmp->tm_yday);
        printf("    tm_isdst = %d\n", tmp->tm_isdst);
    }

    exit(EXIT_SUCCESS);
}

SEE ALSO

time(2), localtime(3), setlocale(3), strftime(3), strptime(3)


2019-03-06

โš ๏ธ **GitHub.com Fallback** โš ๏ธ