OSDN Git Service

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