.\" Copyright 2001 walter harms (walter.harms@informatik.uni-oldenburg.de) .\" and Copyright 2008, Linux Foundation, written by Michael Kerrisk .\" .\" .\" Permission is granted to make and distribute verbatim copies of this .\" manual provided the copyright notice and this permission notice are .\" preserved on all copies. .\" .\" Permission is granted to copy and distribute modified versions of this .\" manual under the conditions for verbatim copying, provided that the .\" entire resulting derived work is distributed under the terms of a .\" permission notice identical to this one. .\" .\" Since the Linux kernel and libraries are constantly changing, this .\" manual page may be incorrect or out-of-date. The author(s) assume no .\" responsibility for errors or omissions, or for damages resulting from .\" the use of the information contained herein. The author(s) may not .\" have taken the same level of care in the production of this manual, .\" which is licensed free of charge, as they might when working .\" professionally. .\" .\" Formatted or processed versions of this manual, if unaccompanied by .\" the source, must acknowledge the copyright and authors of this work. .\" .\" Modified, 2001-12-26, aeb .\" 2008-09-07, mtk, Various rewrites; added an example program. .\" .\" Japanese Version Copyright (c) 2002 NAKANO Takeo .\" and Copyright (c) 2008, Akihiro MOTOKI all rights reserved. .\" .\" Translated 2002-01-12, NAKANO Takeo .\" Updated 2008-09-20, Akihiro MOTOKI , LDP v3.09 .\" .\"WORD: broken-down time 要素別の時刻 .\" .TH GETDATE 3 2010-09-20 "" "Linux Programmer's Manual" .\"O .SH NAME .SH 名前 .\"O getdate, getdate_r \- convert a date-plus-time string to broken-down time getdate, getdate_r \- 日付と時刻の文字列を要素別の時刻に変換する .\"O .SH SYNOPSIS .SH 書式 .B "#include " .sp .BI "struct tm *getdate(const char *" string ); .sp .B "extern int getdate_err;" .sp .B "#include " .sp .BI "int getdate_r(const char *" string ", struct tm *" res ); .sp .in -4n .\"O Feature Test Macro Requirements for glibc (see .\"O .BR feature_test_macros (7)): glibc 向けの機能検査マクロの要件 .RB ( feature_test_macros (7) 参照): .in .sp .BR getdate (): .ad l .RS 4 _XOPEN_SOURCE\ >=\ 500 || _XOPEN_SOURCE\ &&\ _XOPEN_SOURCE_EXTENDED .RE .br .BR getdate_r (): .ad l .RS 4 _GNU_SOURCE .RE .ad .\"O .SH DESCRIPTION .SH 説明 .\"O The function .\"O .BR getdate () .\"O converts a string representation of a date and time, .\"O contained in the buffer pointed to by .\"O .IR string , .\"O into a broken-down time. .BR getdate () 関数は、 .I string が指すバッファに格納された文字列表現の日付と時刻を、 要素別の時刻 (broken-down time) に変換する。 .\"O The broken-down time is stored in a .\"O .I tm .\"O structure, and a pointer to this .\"O structure is returned as the function result. .\"O This .\"O .I tm .\"O structure is allocated in static storage, .\"O and consequently it will be overwritten by further calls to .\"O .BR getdate (). 要素別の時刻は .I tm 構造体に格納され、この構造体へのポインタが関数の結果として返される。 この .I tm 構造体は静的なメモリ領域にあり、 .BR getdate () のそれ以降の呼び出しで上書きされるかもされない。 .\"O .PP .\"O In contrast to .\"O .BR strptime (3), .\"O (which has a .\"O .I format .\"O argument), .\"O .BR getdate () .\"O uses the formats found in the file .\"O whose full pathname is given in the environment variable .\"O .BR DATEMSK . .\"O The first line in the file that matches the given input string .\"O is used for the conversion. .RI ( format 引き数でフォーマットを指定する) .BR strptime (3) とは違い、 .BR getdate () は環境変数 .B DATEMSK で指定されたフルパス名のファイルに書いてあるフォーマットを用いる。 .\"O .PP .\"O The matching is done case insensitively. .\"O Superfluous whitespace, either in the pattern or in the string to .\"O be converted, is ignored. マッチの際には大文字小文字を区別しない。 パターン中でも変換される文字列中でも、余分な空白文字は無視される。 .\"O .PP .\"O The conversion specifications that a pattern can contain are those given for .\"O .BR strptime (3). .\"O One more conversion specification is specified in POSIX.1-2001: パターンに指定できる変換指定は、 .BR strptime (3) のものと同じである。 POSIX.1-2001 では一つの変換指定が追加で規定されている。 .TP .B %Z .\"O Timezone name. .\"O This is not implemented in glibc. タイムゾーンの名前。 glibc では実装されていない。 .LP .\"O When .\"O .B %Z .\"O is given, the structure containing the broken-down time .\"O is initialized with values corresponding to the current .\"O time in the given timezone. .\"O Otherwise, the structure is initialized to the broken-down time .\"O corresponding to the current local time (as by a call to .\"O .BR localtime (3)). .B %Z が指定された場合、要素別の時刻を格納する構造体は、 指定されたタイムゾーンにおける現在時刻に対応する値で初期化される。 指定されていない場合、この構造体は現在のローカルタイムに対応する 要素別の時刻で初期化される .RB ( localtime (3) を呼び出した場合と同じ)。 .LP .\"O When only the weekday is given, the day is taken to be the first such day .\"O on or after today. 曜日だけが指定された場合、 今日または今日以降で、 その曜日に合致する最初の日が採用される。 .LP .\"O When only the month is given (and no year), the month is taken to .\"O be the first such month equal to or after the current month. .\"O If no day is given, it is the first day of the month. (年なしで) 月だけが指定された場合、 今月または今月以降で、 その月に合致する最初の月が採用される。 .LP .\"O When no hour, minute and second are given, the current .\"O hour, minute and second are taken. 時・分・秒がいずれも指定されなかった場合、 現在の時・分・秒が採用される。 .LP .\"O If no date is given, but we know the hour, then that hour is taken .\"O to be the first such hour equal to or after the current hour. 日付の指定がなかったが、時間 (hour) だけ指定された場合は、 現在の時間またはそれ以降で、その指定に合致する最初の時間が採用される。 .\"O .BR getdate_r () .\"O is a GNU extension that provides a reentrant version of .\"O .BR getdate (). .\"O Rather than using a global variable to report errors and a static buffer .\"O to return the broken down time, .\"O it returns errors via the function result value, .\"O and returns the resulting broken-down time in the .\"O caller-allocated buffer pointed to by the argument .\"O .IR res . .BR getdate_r () は GNU 拡張で .BR getdate () のリエントラント版を提供している。 .BR getdate_r () では、エラーを報告するのにグローバル変数を使用したり、 要素別の時刻を返すのに静的なバッファを使用したりせず、 エラーを関数の返り値経由で報告し、要素別の時刻を 引き数 .I res が指し示す呼び出し側で割り当てたバッファに格納して返す。 .\"O .SH "RETURN VALUE" .SH 返り値 .\"O When successful, .\"O .BR getdate () .\"O returns a pointer to a .\"O .IR "struct tm" . .\"O Otherwise, it returns NULL and sets the global variable .\"O .IR getdate_err .\"O to one of the error numbers shown below. .\"O Changes to .\"O .I errno .\"O are unspecified. 成功すると、 .BR getdate () は .I struct tm へのポインタを返す。 失敗すると NULL を返し、グローバル変数 .I getdate_err に以下に示すエラー番号のいずれか一つを設定する。 .I errno の変更については規定されていない。 .\"O On success .\"O .BR getdate_r () .\"O returns 0; .\"O on error it returns one of the error numbers shown below. 成功すると、 .BR getdate_r () は 0 を返す。 失敗すると、以下に示すエラー番号のいずれか一つを返す。 .\"O .SH ERRORS .SH エラー .\"O The following errors are returned via .\"O .IR getdate_err .\"O (for .\"O .BR getdate ()) .\"O or as the function result (for .\"O .BR getdate_r ()): 以下のエラーが、 .RB ( getdate () では) .I getdate_err 経由で返され、 .RB ( getdate_r () では) 関数の返り値として返される。 .TP 4n .B 1 .\"O The .\"O .B DATEMSK .\"O environment variable is not defined, or its value is an empty string. 環境変数 .B DATEMASK が未定義、またはその値が空文字列である。 .TP .B 2 .\"O The template file specified by .\"O .B DATEMSK .\"O cannot be opened for reading. .B DATEMSK で指定されたテンプレートファイルを読み込み用にオープンできない。 .TP .B 3 .\"O Failed to get file status information. ファイルのステータス情報が取得できない。 .\" stat() .TP .B 4 .\"O The template file is not a regular file. テンプレートファイルが通常のファイルでない。 .TP .B 5 .\"O An error was encountered while reading the template file. テンプレートファイルの読み込み中にエラーが起こった。 .TP .B 6 .\"O Memory allocation failed (not enough memory available). .\"O .\" Error 6 doesn't seem to occur in glibc メモリの割り当てに失敗した (メモリが足りない)。 .\" エラー 6 は glibc では発生しないように見える。 .TP .B 7 .\"O There is no line in the file that matches the input. 入力にマッチしたファイルに、行が含まれていない。 .TP .B 8 .\"O Invalid input specification. 入力指定が正しくない。 .\"O .SH ENVIRONMENT .SH 環境変数 .TP .B DATEMSK .\"O File containing format patterns. 書式パターンを含むファイル。 .TP .BR TZ ", " LC_TIME .\"O Variables used by .\"O .BR strptime (3). .BR strptime (3) が用いる変数。 .\"O .SH "CONFORMING TO" .SH 準拠 POSIX.1-2001. .\"O .SH NOTES .SH 注意 .\"O The POSIX.1-2001 specification for .\"O .BR strptime (3) .\"O contains conversion specifications using the .\"O .B %E .\"O or .\"O .B %O .\"O modifier, while such specifications are not given for .\"O .BR getdate (). .\"O In glibc, .\"O .BR getdate () .\"O is implemented using .\"O .BR strptime (3), .\"O so that precisely the same conversions are supported by both. POSIX.1-2001 仕様では、 .BR strptime (3) については .B %E や .B %O といった修正子を用いた変換指定を規定しているが、 .BR getdate () についてはこのような修飾子の規定はない。 glibc では、 .BR getdate () は .BR strptime (3) を用いて実装されており、 両者では全く同じ変換が両者でサポートされている。 .\"O .SH EXAMPLE .SH 例 .\"O The program below calls .\"O .BR getdate () .\"O for each of its command-line arguments, .\"O and for each call displays the values in the fields of the returned .\"O .I tm .\"O structure. .\"O The following shell session demonstrates the operation of the program: 以下のプログラムは、コマンドライン引き数のそれぞれについて .BR getdate () を呼び出し、それぞれについて返された .I tm 構造体のフィールド値を表示する。 次のシェル・セッションは、プログラムの動作例である。 .in +4n .nf .RB "$" " TFILE=$PWD/tfile" .RB "$" " echo \(aq%A\(aq > $TFILE " " # Full weekday name" .RB "$" " echo \(aq%T\(aq >> $TFILE" " # ISO date (YYYY-MM-DD)" .RB "$" " echo \(aq%F\(aq >> $TFILE" " # Time (HH:MM:SS)" .RB "$" " date" .RB "$" " export DATEMSK=$TFILE" .RB "$" " ./a.out Tuesday \(aq2009-12-28\(aq \(aq12:22:33\(aq" 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 .fi .in .\"O .SS Program source .SS プログラムのソース \& .nf #define _GNU_SOURCE 500 #include #include #include 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); } .fi .\"O .SH "SEE ALSO" .SH 関連項目 .BR time (2), .BR localtime (3), .BR setlocale (3), .BR strftime (3), .BR strptime (3), .BR feature_test_macros (7)