OSDN Git Service

(split) LDP: Update draft pages (with po4a --force)
[linuxjm/LDP_man-pages.git] / draft / man3 / strptime.3
1 .\" Copyright 1993 Mitchum DSouza <m.dsouza@mrc-apu.cam.ac.uk>
2 .\"
3 .\" %%%LICENSE_START(VERBATIM)
4 .\" Permission is granted to make and distribute verbatim copies of this
5 .\" manual provided the copyright notice and this permission notice are
6 .\" preserved on all copies.
7 .\"
8 .\" Permission is granted to copy and distribute modified versions of this
9 .\" manual under the conditions for verbatim copying, provided that the
10 .\" entire resulting derived work is distributed under the terms of a
11 .\" permission notice identical to this one.
12 .\"
13 .\" Since the Linux kernel and libraries are constantly changing, this
14 .\" manual page may be incorrect or out-of-date.  The author(s) assume no
15 .\" responsibility for errors or omissions, or for damages resulting from
16 .\" the use of the information contained herein.  The author(s) may not
17 .\" have taken the same level of care in the production of this manual,
18 .\" which is licensed free of charge, as they might when working
19 .\" professionally.
20 .\"
21 .\" Formatted or processed versions of this manual, if unaccompanied by
22 .\" the source, must acknowledge the copyright and authors of this work.
23 .\" %%%LICENSE_END
24 .\"
25 .\" Modified, jmv@lucifer.dorms.spbu.ru, 1999-11-08
26 .\" Modified, aeb, 2000-04-07
27 .\" Updated from glibc docs, C. Scott Ananian, 2001-08-25
28 .\" Modified, aeb, 2001-08-31
29 .\" Modified, wharms 2001-11-12, remark on white space and example
30 .\"
31 .\"*******************************************************************
32 .\"
33 .\" This file was generated with po4a. Translate the source file.
34 .\"
35 .\"*******************************************************************
36 .TH STRPTIME 3 2009\-12\-05 GNU "Linux Programmer's Manual"
37 .SH 名前
38 strptime \- 文字列であらわされている時間を tm 構造体の時間に変換する
39 .SH 書式
40 \fB#define _XOPEN_SOURCE\fP /* feature_test_macros(7) 参照 */
41 .br
42 \fB#include <time.h>\fP
43 .sp
44 \fBchar *strptime(const char *\fP\fIs\fP\fB, const char *\fP\fIformat\fP\fB,\fP \fBstruct tm
45 *\fP\fItm\fP\fB);\fP
46 .SH 説明
47 \fBstrptime\fP()  関数は \fBstrftime\fP(3)  の逆関数であり、ポインタ \fIs\fP が指す文字列を時間に変換する。 変換の際には
48 \fIformat\fP で指定したフォーマットを用い、値はポインタ \fItm\fP が指す \fItm\fP 構造体に収められる。 \fIformat\fP は、
49 \fBscanf\fP(3)  で使われているような、 フィールドディスクリプターとテキスト文字で構成されている文字列である。
50 個々のフィールドディスクリプターは \fB%\fP とそれに続く文字からなり、 後者にフィールドディスクリプターを置き換える内容を指定する。
51 \fIformat\fP 文字列中の他の全ての文字には、入力文字列にマッチする文字がなければならない。 フォーマット文字列中にある空白は例外であり、
52 入力文字列中の 0 個以上の空白とマッチする。 2 つのフィールドディスクリプターの間には、 空白・英字・数字がなければならない。
53 .PP
54 \fBstrptime\fP()  関数は、入力文字列を左から右へ処理する。 入力された 3 つの要素 (空白・文字・フォーマット) は、順に処理される。
55 入力がフォーマット文字列とマッチできない場合、関数は停止する。 残りのフォーマット文字列と入力文字列は処理されない。
56 .PP
57 使用可能なフィールドディスクリプターを以下に挙げる。 (曜日や月の名前といった) 文字列をマッチさせる場合、 大文字と小文字は区別せずに比較する。
58 数をマッチさせる場合、前に 0 をつけても構わないが必ずしも必要ではない。
59 .TP 
60 \fB%%\fP
61 文字としての \fB%\fP。
62 .TP 
63 \fB%a\fP または \fB%A\fP
64 現在のロケールでの曜日名 (省略名または完全な名前)。
65 .TP 
66 \fB%b\fP または \fB%B\fP または \fB%h\fP
67 現在のロケールでの月名 (省略名または完全な名前)。
68 .TP 
69 \fB%c\fP
70 現在のロケールでの日付と時刻の表現。
71 .TP 
72 \fB%C\fP
73 1 世紀中の年 (0\-99)。
74 .TP 
75 \fB%d\fP または \fB%e\fP
76 月内の日付 (1\-31)。
77 .TP 
78 \fB%D\fP
79 日付。 \fB%m/%d/%y\fP と同じ。 (これはアメリカ式の日付形式で、 ヨーロッパでは特に \fB%d/%m/%y\fP
80 という形式が広く使われているために、 アメリカ人以外には紛らわしく感じられる。 ISO 8601 規格では \fB%Y\-%m\-%d\fP という形式である。)
81 .TP 
82 \fB%H\fP
83 時間 (0\-23)。
84 .TP 
85 \fB%I\fP
86 12 時間制での時間 (1\-12)。
87 .TP 
88 \fB%j\fP
89 年の初めからの通算の日付 (1\-366)。
90 .TP 
91 \fB%m\fP
92 数字表現の月 (1\-12)。
93 .TP 
94 \fB%M\fP
95 分 (0\-59)。
96 .TP 
97 \fB%n\fP
98 任意の空白。
99 .TP 
100 \fB%p\fP
101 ロケールの AM (午前) と PM (午後) に対応するもの。 (注意: 対応するものがないかもしれない。)
102 .TP 
103 \fB%r\fP
104 (ロケールの AM と PM を使った) 12 時間制の時間。 POSIX ロケールでは \fB%I:%M:%S %p\fP と同じ。 現在のロケールにおいて
105 \fBLC_TIME\fP パートの \fIt_fmt_ampm\fP が定義されていない場合、 動作は未定義である。
106 .TP 
107 \fB%R\fP
108 \fB%H:%M\fP と同じ。
109 .TP 
110 \fB%S\fP
111 秒 (0\-60; 60 は閏秒を示す。以前は 61 も指定できた)。
112 .TP 
113 \fB%t\fP
114 任意の空白。
115 .TP 
116 \fB%T\fP
117 \fB%H:%M:%S\fP と同じ。
118 .TP 
119 \fB%U\fP
120 日曜日を週の始まりとした年通算での週数 (0\-53)。 1 月の最初の日曜日を第 1 週目の最初の日する。
121 .TP 
122 \fB%w\fP
123 日曜日を 0 とした数字表記の曜日 (0\-6)。
124 .TP 
125 \fB%W\fP
126 月曜日を週の始まりとした年通算での週数 (0\-53)。 1 月の最初の月曜日を第 1 週目の最初の日する。
127 .TP 
128 \fB%x\fP
129 日付。ロケールの日付フォーマットを使う。
130 .TP 
131 \fB%X\fP
132 時刻。ロケールの時刻フォーマットを使う。
133 .TP 
134 \fB%y\fP
135 1 世紀中の年 (0\-99)。 世紀が指定されない場合、 値が 69\-99 の範囲のときは 20 世紀の年 (1969\-1999)、 値が 00\-68
136 の範囲のときは 21 世紀の年 (2000\-2068) とする。
137 .TP 
138 \fB%Y\fP
139 年。世紀の部分を含む (例: 1991)。
140 .LP
141 E や O という修正子を使うことで変更できるフィールドディスクリプタもある。 これらの修正子は、別のフォーマットや仕様を使うことを指示する。
142 別のフォーマットや仕様が現在のロケールに存在しないときは、 変更していないフィールドディスクリプタが使われる。
143 .LP
144 E 修正子は、ロケールに依存した日付と時刻の別の表現形式が 入力文字列に含まれていることを指定する。
145 .TP 
146 \fB%Ec\fP
147 日付と時刻。ロケールに依存した別の表現形式を使う。
148 .TP 
149 \fB%EC\fP
150 基準年 (期間) の名前。ロケールに依存した別の表現形式を使う。
151 .TP 
152 \fB%Ex\fP
153 日付。ロケールに依存した別の表現形式を使う。
154 .TP 
155 \fB%EX\fP
156 時刻。ロケールに依存した別の表現形式を使う。
157 .TP 
158 \fB%Ey\fP
159 \fB%EC\fP (年のみ) からのオフセット。ロケールに依存した別の表現形式を使う。
160 .TP 
161 \fB%EY\fP
162 完全な形式の年。別の表現型式を使う。
163 .LP
164 O 修正子は、ロケールに依存した別のフォーマットの中に 数値の入力があることを指定する。
165 .TP 
166 \fB%Od\fP または \fB%Oe\fP
167 月の初めからの通算の日付。ロケールに依存した別の数値シンボルを使う。 0 を頭につけてもよいが、必須ではない。
168 .TP 
169 \fB%OH\fP
170 時間 (24 時間制)。ロケールに依存した別の数値シンボルを使う。
171 .TP 
172 \fB%OI\fP
173 時間 (12 時間制)。ロケールに依存した別の数値シンボルを使う。
174 .TP 
175 \fB%Om\fP
176 月。ロケールに依存した別の数値シンボルを使う。
177 .TP 
178 \fB%OM\fP
179 分。ロケールに依存した別の数値シンボルを使う。
180 .TP 
181 \fB%OS\fP
182 秒。ロケールに依存した別の数値シンボルを使う。
183 .TP 
184 \fB%OU\fP
185 年の初めからの通算の週数 (日曜日を週の始めとする)。 ロケールに依存した別の数値シンボルを使う。
186 .TP 
187 \fB%Ow\fP
188 数値表記の曜日 (日曜日を 0 とする)。 ロケールに依存した別の数値シンボルを使う。
189 .TP 
190 \fB%OW\fP
191 年の初めからの通算の週数 (月曜日を週の始めとする)。 ロケールに依存した別の数値シンボルを使う。
192 .TP 
193 \fB%Oy\fP
194 年 (\fB%C\fP からのオフセット)。ロケールに依存した別の数値シンボルを使う。
195 .LP
196 要素別の時刻構造体 \fItm\fP は \fI<time.h>\fP 内で以下の様に定義されている。
197 .sp
198 .in +4n
199 .nf
200 struct tm {
201     int tm_sec;        /* 秒 */
202     int tm_min;        /* 分 */
203     int tm_hour;       /* 時間 */
204     int tm_mday;       /* 日 */
205     int tm_mon;        /* 月 */
206     int tm_year;       /* 年 */
207     int tm_wday;       /* 曜日 */
208     int tm_yday;       /* 年内通算日 */
209     int tm_isdst;      /* 夏時間 */
210 };
211 .fi
212 .in
213 .SH 返り値
214 この関数の返り値は、関数の中で処理されなかった最初の文字へのポインタである。 フォーマット文字列が必要する以上の文字が入力文字列に含まれている場合、
215 返り値は最後に処理された入力文字の次の文字を指す。 すべての入力文字列が処理された場合、 返り値は文字列末尾の NULL バイトを指す。
216 \fBstrptime\fP()  がフォーマット文字列のすべての比較に失敗し、 エラーが起こった場合、関数は NULL ポインタを返す。
217 .SH 準拠
218 SUSv2, POSIX.1\-2001.
219 .SH 注意
220 .LP
221 原則として、この関数は \fItm\fP の初期化はせずに、 指定された値のみを入れる。 つまり、この関数の呼び出しの前に \fItm\fP
222 を初期化しなければならない。 他の UNIX システムとは、細かい点で異なる。 glibc の実装では、明示的に指定されないフィールドは変更されない。
223 例外として、年・月・日のいずれかの要素が変更された場合に \fItm_wday\fP と \fItm_yday\fP が再計算される。
224 .PP
225 この関数は、libc 4.6.8 以降で使用できる。 Linux の libc4 と libc5 のインクルードファイルは、
226 この関数のプロトタイプを常に定義する。 glibc2 のインクルードファイルは、 \fB_XOPEN_SOURCE\fP または \fB_GNU_SOURCE\fP
227 が定義された場合のみ、 この関数のプロトタイプを提供する。
228 .PP
229 libc 5.4.13 より前では、空白 (と \(aqn\(aq または \(aqt\(aq 指定) は扱われなかった。 ロケールの修正子
230 \(aqE\(aq と \(aqO\(aq は受け付けられなかった。 また、\(aqC\(aq の指定は \(aqc\(aq
231 の指定と同じ意味で扱われた。
232 .PP
233 .\" In libc4 and libc5 the code for %I is broken (fixed in glibc;
234 .\" %OI was fixed in glibc 2.2.4).
235 \(aqy\(aq (1 世紀中の年) の指定は、libc4 と libc5 では 20 世紀の年として解釈される。 glibc 2.0 では
236 1950\-2049 の範囲として解釈される。 glibc 2.1 からは 1969\-2068 の範囲として解釈される。
237 .SS "glibc での注意"
238 一貫性を持たせるため、glibc では \fBstrptime\fP() に \fBstrftime\fP(3)
239 と同じフォーマット文字をサポートさせようとしている。多くの場合、対応するフィールドが解釈されるが、 \fItm\fP
240 フィールドは変更されない。使用可能なフォーマット文字を以下に示す。
241 .TP 
242 \fB%F\fP
243 \fB%Y\-%m\-%d\fP と同じ。ISO 8601 の日付形式。
244 .TP 
245 \fB%g\fP
246 ISO 週数に対応した西暦年。世紀は含まず (0\-99) の範囲。
247 .TP 
248 \fB%G\fP
249 ISO 週数に対応した西暦年 (例えば 1991)。
250 .TP 
251 \fB%u\fP
252 10 進数表記の曜日 (1\-7 で月曜日を 1 とする)。
253 .TP 
254 \fB%V\fP
255 ISO 8601:1988 形式での年通算の 10 進数表記での週数 (1\-53)。 1 月 1 日を含む (月曜日から始まる) 週に 4
256 日以上が含まれている場合は、 その週を第 1 週とする。 3 日以下しか含まれていない場合は、1 月 1 日を含む週を前年の最終の週として、 次の週を第
257 1 週とする。
258 .TP 
259 \fB%z\fP
260 RFC\-822/ISO 8601 標準タイムゾーンを指定する。
261 .TP 
262 \fB%Z\fP
263 タイムゾーン名。
264 .LP
265 同様に、 \fBstrftime\fP(3)  の GNU 版での拡張に対応するために、 \fB%k\fP は \fB%H、\fP \fB%P\fP は \fB%p\fP
266 と等価に扱われる。また、 \fB%l\fP は \fB%I\fP と等価に扱われるようになるはずである。 さらに以下も定義されている。
267 .TP 
268 \fB%s\fP
269 紀元 (Epoch; 1970\-01\-01 00:00:00 +0000 (UTC)) からの通算の秒数。
270 閏秒がサポートされていない限り、閏秒はカウントしない。
271 .LP
272 glibc における実装では、2 つのフィールド間の空白は必要ない。
273 .SH 例
274 以下の例は \fBstrptime\fP()  と \fBstrftime\fP(3)  の使用法を示している。
275 .sp
276 .nf
277 #define _XOPEN_SOURCE
278 #include <stdio.h>
279 #include <stdlib.h>
280 #include <string.h>
281 #include <time.h>
282
283 int
284 main(void)
285 {
286     struct tm tm;
287     char buf[255];
288
289     memset(&tm, 0, sizeof(struct tm));
290     strptime("2001\-11\-12 18:31:01", "%Y\-%m\-%d %H:%M:%S", &tm);
291     strftime(buf, sizeof(buf), "%d %b %Y %H:%M", &tm);
292     puts(buf);
293     exit(EXIT_SUCCESS);
294 }
295 .fi
296 .SH 関連項目
297 \fBtime\fP(2), \fBgetdate\fP(3), \fBscanf\fP(3), \fBsetlocale\fP(3), \fBstrftime\fP(3)
298 .SH この文書について
299 この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.50 の一部
300 である。プロジェクトの説明とバグ報告に関する情報は
301 http://www.kernel.org/doc/man\-pages/ に書かれている。