Man page - getdate(3)

Packages contains this manual

Available languages:

en fr pl ja ru de

Manual

GETDATE

名 前
書 式
説 明
返 り 値
エ ラ ー
環 境 変 数
属 性
準 拠
注 意

プ ロ グ ラ ム の ソ ー ス
関 連 項 目
こ の 文 書 に つ い て

名 前

getdate, getdate_r - 日 付 と 時 刻 の 文 字 列 を 要 素 別 の 時 刻 に 変 換 す る

書 式

#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

説 明

getdate () 関 数 は 、 string が 指 す バ ッ フ ァ ー に 格 納 さ れ た 文 字 列 表 現 の 日 付 と 時 刻 を 、 要 素 別 の 時 刻 (broken-down time) に 変 換 す る 。 要 素 別 の 時 刻 は tm 構 造 体 に 格 納 さ れ 、 こ の 構 造 体 へ の ポ イ ン タ ー が 関 数 の 結 果 と し て 返 さ れ る 。 こ の tm 構 造 体 は 静 的 な メ モ リ ー 領 域 に あ り 、 getdate () の そ れ 以 降 の 呼 び 出 し で 上 書 き さ れ る か も さ れ な い 。

( format 引 数 で フ ォ ー マ ッ ト を 指 定 す る ) strptime (3) と は 違 い 、 getdate () は 環 境 変 数 DATEMSK で 指 定 さ れ た フ ル パ ス 名 の フ ァ イ ル に 書 い て あ る フ ォ ー マ ッ ト を 用 い る 。

マ ッ チ の 際 に は 大 文 字 小 文 字 を 区 別 し な い 。 パ タ ー ン 中 で も 変 換 さ れ る 文 字 列 中 で も 、 余 分 な 空 白 文 字 は 無 視 さ れ る 。

パ タ ー ン に 指 定 で き る 変 換 指 定 は 、 strptime (3) の も の と 同 じ で あ る 。 POSIX.1-2001 で は 一 つ の 変 換 指 定 が 追 加 で 規 定 さ れ て い る 。

%Z

タ イ ム ゾ ー ン の 名 前 。 glibc で は 実 装 さ れ て い な い 。

%Z が 指 定 さ れ た 場 合 、 要 素 別 の 時 刻 を 格 納 す る 構 造 体 は 、 指 定 さ れ た タ イ ム ゾ ー ン に お け る 現 在 時 刻 に 対 応 す る 値 で 初 期 化 さ れ る 。 指 定 さ れ て い な い 場 合 、 こ の 構 造 体 は 現 在 の ロ ー カ ル タ イ ム に 対 応 す る 要 素 別 の 時 刻 で 初 期 化 さ れ る ( localtime (3) を 呼 び 出 し た 場 合 と 同 じ )。

曜 日 だ け が 指 定 さ れ た 場 合 、 今 日 ま た は 今 日 以 降 で 、 そ の 曜 日 に 合 致 す る 最 初 の 日 が 採 用 さ れ る 。

(年 な し で ) 月 だ け が 指 定 さ れ た 場 合 、 今 月 ま た は 今 月 以 降 で 、 そ の 月 に 合 致 す る 最 初 の 月 が 採 用 さ れ る 。

時 ・ 分 ・ 秒 が い ず れ も 指 定 さ れ な か っ た 場 合 、 現 在 の 時 ・ 分 ・ 秒 が 採 用 さ れ る 。

日 付 の 指 定 が な か っ た が 、 時 間 (hour) だ け 指 定 さ れ た 場 合 は 、 現 在 の 時 間 ま た は そ れ 以 降 で 、 そ の 指 定 に 合 致 す る 最 初 の 時 間 が 採 用 さ れ る 。

getdate_r () は GNU 拡 張 で getdate () の リ エ ン ト ラ ン ト 版 を 提 供 し て い る 。 getdate_r () で は 、 エ ラ ー を 報 告 す る の に グ ロ ー バ ル 変 数 を 使 用 し た り 、 要 素 別 の 時 刻 を 返 す の に 静 的 な バ ッ フ ァ ー を 使 用 し た り せ ず 、 エ ラ ー を 関 数 の 返 り 値 経 由 で 報 告 し 、 要 素 別 の 時 刻 を 引 数 res が 指 し 示 す 呼 び 出 し 側 で 割 り 当 て た バ ッ フ ァ ー に 格 納 し て 返 す 。

返 り 値

成 功 す る と 、 getdate () は struct tm へ の ポ イ ン タ ー を 返 す 。 失 敗 す る と NULL を 返 し 、 グ ロ ー バ ル 変 数 getdate_err に 以 下 に 示 す エ ラ ー 番 号 の い ず れ か 一 つ を 設 定 す る 。 errno の 変 更 に つ い て は 規 定 さ れ て い な い 。

成 功 す る と 、 getdate_r () は 0 を 返 す 。 失 敗 す る と 、 以 下 に 示 す エ ラ ー 番 号 の い ず れ か 一 つ を 返 す 。

エ ラ ー

以 下 の エ ラ ー が 、 ( getdate () で は ) getdate_err 経 由 で 返 さ れ 、 ( getdate_r () で は ) 関 数 の 返 り 値 と し て 返 さ れ る 。

1

環 境 変 数 DATEMASK が 未 定 義 、 ま た は そ の 値 が 空 文 字 列 で あ る 。

2

DATEMSK で 指 定 さ れ た テ ン プ レ ー ト フ ァ イ ル を 読 み 込 み 用 に オ ー プ ン で き な い 。

3

フ ァ イ ル の ス テ ー タ ス 情 報 が 取 得 で き な い 。

4

テ ン プ レ ー ト フ ァ イ ル が 通 常 の フ ァ イ ル で な い 。

5

テ ン プ レ ー ト フ ァ イ ル の 読 み 込 み 中 に エ ラ ー が 起 こ っ た 。

6

メ モ リ ー の 割 り 当 て に 失 敗 し た (メ モ リ ー が 足 り な い )。

7

入 力 に マ ッ チ し た フ ァ イ ル に 、 行 が 含 ま れ て い な い 。

8

入 力 指 定 が 正 し く な い 。

環 境 変 数

DATEMSK

書 式 パ タ ー ン を 含 む フ ァ イ ル 。

TZ , LC_TIME

strptime (3) が 用 い る 変 数 。

属 性

こ の 節 で 使 用 さ れ て い る 用 語 の 説 明 に つ い て は 、 attributes (7) を 参 照 。

Image grohtml-32129-1.png

準 拠

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

注 意

POSIX.1 仕 様 で は 、 strptime (3) に つ い て は %E %O と い っ た 修 正 子 を 用 い た 変 換 指 定 を 規 定 し て い る が 、 getdate () に つ い て は こ の よ う な 修 飾 子 の 規 定 は な い 。 glibc で は 、 getdate () は strptime (3) を 用 い て 実 装 さ れ て お り 、 両 者 で は 全 く 同 じ 変 換 が 両 者 で サ ポ ー ト さ れ て い る 。

以 下 の プ ロ グ ラ ム は 、 コ マ ン ド ラ イ ン 引 数 の そ れ ぞ れ に つ い て getdate () を 呼 び 出 し 、 そ れ ぞ れ に つ い て 返 さ れ た tm 構 造 体 の フ ィ ー ル ド 値 を 表 示 す る 。 次 の シ ェ ル セ ッ シ ョ ン は 、 プ ロ グ ラ ム の 動 作 例 で あ る 。

$ TFILE=$PWD/tfile
$ echo '%A' > $TFILE # Full name of the day of the week
$ echo '%T' >> $TFILE # ISO date (YYYY-MM-DD)
$ echo '%F' >> $TFILE # Time (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;

for (int 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);
}

関 連 項 目

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

こ の 文 書 に つ い て

こ の man ペ ー ジ は Linux man-pages プ ロ ジ ェ ク ト の リ リ ー ス 5.10 の 一 部 で あ る 。 プ ロ ジ ェ ク ト の 説 明 と バ グ 報 告 に 関 す る 情 報 は https://www.kernel.org/doc/man-pages/ に 書 か れ て い る 。