翻訳ドキュメント管理用
Révision | 3781c848e790d1a02e84b978d89beded1a58ecdb (tree) |
---|---|
l'heure | 2021-06-20 12:43:38 |
Auteur | Akihiro Motoki <amotoki@gmai...> |
Commiter | Akihiro Motoki |
LDP: Release strftime.3
@@ -52,120 +52,141 @@ | ||
52 | 52 | .\" Updated 2012-05-29, Akihiro MOTOKI <amotoki@gmail.com> |
53 | 53 | .\" Updated 2013-03-26, Akihiro MOTOKI <amotoki@gmail.com> |
54 | 54 | .\" Updated 2013-07-31, Akihiro MOTOKI <amotoki@gmail.com> |
55 | +.\" Updated 2021-04-13, Akihiro Motoki <amotoki@gmail.com> | |
55 | 56 | .\" |
56 | -.TH STRFTIME 3 2014\-08\-19 GNU "Linux Programmer's Manual" | |
57 | +.TH STRFTIME 3 " 2020\-08\-13" GNU "Linux Programmer's Manual" | |
57 | 58 | .SH 名前 |
58 | 59 | strftime \- 日付および時刻の文字列への変換 |
59 | 60 | .SH 書式 |
60 | 61 | .nf |
61 | 62 | \fB#include <time.h>\fP |
62 | -.sp | |
63 | +.PP | |
63 | 64 | \fBsize_t strftime(char *\fP\fIs\fP\fB, size_t \fP\fImax\fP\fB, const char *\fP\fIformat\fP\fB,\fP |
64 | 65 | \fB const struct tm *\fP\fItm\fP\fB);\fP |
65 | 66 | .fi |
66 | 67 | .SH 説明 |
67 | 68 | .\" FIXME . POSIX says: Local timezone information is used as though |
68 | 69 | .\" strftime() called tzset(). But this doesn't appear to be the case |
69 | -\fBstrftime\fP() 関数 は、要素別の時刻 \fItm\fP の内容を \fIformat\fP で指定された書式指定にしたがって変換し、 長さ | |
70 | -\fImax\fP の文字列 \fIs\fP に書き込む。 | |
70 | +\fBstrftime\fP() 関数 は、要素別の時刻 \fItm\fP の内容を \fIformat\fP で指定された書式指定にしたがって変換し、長さ \fImax\fP | |
71 | +の文字列 \fIs\fP に書き込む。要素別の時刻構造体 \fItm\fP は \fI<time.h>\fP で定義されている。 \fBctime\fP(3) | |
72 | +も参照。 | |
71 | 73 | .PP |
72 | -書式指定はヌル終端された文字列であり、 「変換指定 (conversion specification)」と呼ばれる特別な文字列を 含まることができる。 | |
73 | -各々の変換指定は \(aq%\(aq 文字で始まり、 「変換指定文字 (conversion specifier character)」と呼ばれる | |
74 | -何らか他の文字で終端される。上記以外の全ての文字列は 「通常の文字列 (ordinary character sequence)」となる。 | |
74 | +書式指定はヌル終端された文字列であり、「変換指定 (conversion | |
75 | +specification)」と呼ばれる特別な文字列を含めることができる。各々の変換指定は \(aq%\(aq 文字で始まり、「変換指定文字 | |
76 | +(conversion specifier character)」と呼ばれる何らか他の文字で終端される。上記以外の全ての文字列は「通常の文字列 | |
77 | +(ordinary character sequence)」となる。 | |
75 | 78 | .PP |
76 | -(NULL バイトも含む) 通常の文字列内の文字は、 そのまま \fIformat\fP から \fIs\fP にコピーされる。 | |
77 | -一方、変換指定の文字は以下のように置換される。 | |
79 | +(NULL バイトも含む) 通常の文字列内の文字は、そのまま \fIformat\fP から \fIs\fP | |
80 | +にコピーされる。一方、変換指定の文字は以下のリストに示すように置換される。このリストでは、 \fItm\fP | |
81 | +構造体のフィールドが参照される場合、その情報も記載している。 | |
78 | 82 | .TP |
79 | 83 | \fB%a\fP |
80 | -現在のロケールにおける曜日の省略名。 | |
84 | +現在のロケールにおける曜日の省略名。 \fItm_wday\fP から計算される。現在のロケールで使用される具体的な名前は、引き数に | |
85 | +\fBABDAY_\fP{\fB1\fP\(en\fB7\fP} を指定して \fBnl_langinfo\fP(3) を呼び出すことで取得できる。 | |
81 | 86 | .TP |
82 | 87 | \fB%A\fP |
83 | -現在のロケールにおける曜日の完全な名前。 | |
88 | +現在のロケールにおける曜日の完全な名前。 \fItm_wday\fP から計算される。現在のロケールで使用される具体的な名前は、引き数に | |
89 | +\fBDAY_\fP{\fB1\fP\(en\fB7\fP} を指定して \fBnl_langinfo\fP(3) を呼び出すことで取得できる。 | |
84 | 90 | .TP |
85 | 91 | \fB%b\fP |
86 | -現在のロケールにおける月の省略名。 | |
92 | +現在のロケールにおける月の省略名。 \fItm_mon\fP から計算される。現在のロケールで使用される具体的な名前は、引き数に | |
93 | +\fBABMON_\fP{\fB1\fP\(en\fB12\fP} を指定して \fBnl_langinfo\fP(3) を呼び出すことで取得できる。 | |
87 | 94 | .TP |
88 | 95 | \fB%B\fP |
89 | -現在のロケールにおける月の完全な名前。 | |
96 | +現在のロケールにおける月の完全な名前。 \fItm_mon\fP から計算される。現在のロケールで使用される具体的な名前は、引き数に | |
97 | +\fBMON_\fP{\fB1\fP\(en\fB12\fP} を指定して \fBnl_langinfo\fP(3) を呼び出すことで取得できる。 | |
90 | 98 | .TP |
91 | 99 | \fB%c\fP |
92 | -現在のロケールにおいて一般的な日付・時刻の表記。 | |
100 | +現在のロケールにおいて一般的な日付・時刻の表記。現在のロケールで使用される具体的なフォーマットは、 \fB%c\fP 変換指定の場合は \fBD_T_FMT\fP | |
101 | +を、 \fB%Ec\fP 変換指定の場合は \fBERA_D_T_FMT\fP を引き数に指定して \fBnl_langinfo\fP(3) を呼び出すことで取得できる。 | |
102 | +POSIX ロケールでは \fB%a %b %e %H:%M:%S %Y\fP と等価である。 | |
93 | 103 | .TP |
94 | 104 | \fB%C\fP |
95 | -世紀 (西暦年の上 2 桁)。 (SU) | |
105 | +世紀に対応する 2 桁の整数 (year/1000)。 \fB%EC\fP 変換指定は、西暦以外の年数表記 ("era") の名前に対応する。 | |
106 | +\fItm_year\fP から計算される。 (SU) | |
96 | 107 | .TP |
97 | 108 | \fB%d\fP |
98 | -月内通算日 (10 進数表記) (01\-31)。 | |
109 | +月内通算日 (10 進数表記) (01\-31)。 \fItm_mday\fP から計算される。 | |
99 | 110 | .TP |
100 | 111 | \fB%D\fP |
101 | 112 | \fB%m/%d/%y\fP と等価。(うえっ、アメリカ専用だ。アメリカ以外の国では \fB%d/%m/%y\fP |
102 | 113 | の方が一般的だ。紛らわしいので、使用すべきではない。) (SU) |
103 | 114 | .TP |
104 | 115 | \fB%e\fP |
105 | -\fB%d\fP と同様に月内通算日を 10 進数で表現するが、 1 桁の場合 10 の位にゼロを置かずスペースを置く。(SU) | |
116 | +\fB%d\fP と同様に月内通算日を 10 進数で表現するが、 1 桁の場合 10 の位にゼロを置かずスペースを置く。 \fItm_mday\fP | |
117 | +から計算される。 (SU) | |
106 | 118 | .TP |
107 | 119 | \fB%E\fP |
108 | -別形式を使用する際の修飾子。下記参照。 (SU) | |
120 | +別形式 (西暦以外の年数表記; "era") を使用する際の修飾子。下記参照。 (SU) | |
109 | 121 | .TP |
110 | 122 | \fB%F\fP |
111 | 123 | \fB%Y\-%m\-%d\fP と等価 (ISO\ 8601 形式の日付フォーマット)。 (C99) |
112 | 124 | .TP |
113 | 125 | \fB%G\fP |
114 | -ISO\ 8601 週単位表記の年 (week\-based year; 「注意」の節を参照)。 世紀も 10 進数で表す。 ISO 週番号 (\fB%V\fP | |
115 | -を参照) に対応した 4 桁の西暦年。 これは基本的には \fB%Y\fP と同じ形式だが、ISO 週数が前年や翌年になる | |
116 | -場合にはその年が使用される点が異なる。(TZ) | |
126 | +ISO\ 8601 の週 (ISO\ 8601 week) に基づく年の表示。「注意」の節を参照)。世紀も 10 進数で表す。 ISO 週番号 | |
127 | +(\fB%V\fP を参照) に対応した 4 桁の西暦年。 これは基本的には \fB%Y\fP と同じ形式だが、ISO | |
128 | +週数が前年や翌年になる場合にはその年が使用される点が異なる。 \fItm_year\fP, \fItm_yday\fP, \fItm_wday\fP から計算される。 | |
129 | +(TZ) | |
117 | 130 | .TP |
118 | 131 | \fB%g\fP |
119 | -\fB%G\fP と同様。但し、世紀を含まず下 2 桁のみを表示 (00\-99)。 (TZ) | |
132 | +\fB%G\fP と同様。ただし、世紀を含まず下 2 桁のみを表示 (00\(en99)。 \fItm_year\fP, \fItm_yday\fP, | |
133 | +\fItm_wday\fP から計算される。 (TZ) | |
120 | 134 | .TP |
121 | 135 | \fB%h\fP |
122 | 136 | \fB%b\fP と等価 (SU) |
123 | 137 | .TP |
124 | 138 | \fB%H\fP |
125 | -24 時間表記での時 (hour)。 (00\-23) | |
139 | +24 時間表記での時 (hour) (00\-23)。 \fItm_hour\fP から計算される。 | |
126 | 140 | .TP |
127 | 141 | \fB%I\fP |
128 | -12 時間表記での時 (hour)。 (01\-12) | |
142 | +12 時間表記での時 (hour) (01\-12)。 \fItm_hour\fP から計算される。 | |
129 | 143 | .TP |
130 | 144 | \fB%j\fP |
131 | -年の初めから通算の日数。 (001\-366) | |
145 | +年の初めから通算の日数 (001\-366)。 \fItm_yday\fP から計算される。 | |
132 | 146 | .TP |
133 | 147 | \fB%k\fP |
134 | -24 時間表記での時 (0\-23)。 1 桁の場合には前にゼロでなくスペースが置かれる。 (\fB%H\fP も参照) (TZ) | |
148 | +24 時間表記での時 (0\-23)。 1 桁の場合には前にゼロでなくスペースが置かれる。 \fB%H\fP も参照。 \fItm_hour\fP から計算される。 | |
149 | +(TZ) | |
135 | 150 | .TP |
136 | 151 | \fB%l\fP |
137 | -12 時間表記での時 (0\-12)。 1 桁の場合には前にゼロでなくスペースが置かれる。 (\fB%I\fP も参照) (TZ) | |
152 | +12 時間表記での時 (0\-12)。 1 桁の場合には前にゼロでなくスペースが置かれる。 \fB%I\fP も参照。 \fItm_hour\fP から計算される。 | |
153 | +(TZ) | |
138 | 154 | .TP |
139 | 155 | \fB%m\fP |
140 | -月 (10 進数表記)。 (01\-12) | |
156 | +10 進数表記の月 (01\-12)。 \fItm_mon\fP から計算される。 | |
141 | 157 | .TP |
142 | 158 | \fB%M\fP |
143 | -分 (10 進数表記) (00\-59) | |
159 | +10 進数表記の分 (00\-59)。 \fItm_min\fP から計算される。 | |
144 | 160 | .TP |
145 | 161 | \fB%n\fP |
146 | -改行。 (SU) | |
162 | +改行 (SU) | |
147 | 163 | .TP |
148 | 164 | \fB%O\fP |
149 | -別形式を使用する際の修飾子。下記参照。 (SU) | |
165 | +別の数値シンボルを使用する際の修飾子。下記参照。 (SU) | |
150 | 166 | .TP |
151 | 167 | \fB%p\fP |
152 | 168 | 現在のロケールにおける「午前」「午後」に相当する文字列。 英語の場合には "AM" または "PM" となる。 |
153 | -正午は「午後」、真夜中は「午前」として扱われる。 | |
169 | +正午は「午後」、真夜中は「午前」として扱われる。 \fItm_hour\fP から計算される。現在のロケールで "AM" と "PM" | |
170 | +に対応する文字列表現は、それぞれ \fBAM_STR\fP と \fBPM_STR\fP を指定して \fBnl_langinfo\fP(3) | |
171 | +を呼び出すことで取得できる。 | |
154 | 172 | .TP |
155 | 173 | \fB%P\fP |
156 | -\fB%p\fP と同様であるが小文字が使用される。 英語の場合には "am" や "pm" となる。(GNU) | |
174 | +\fB%p\fP と同様であるが小文字が使用される。 "am" や "pm"、もしくは現在のロケールでの対応する文字列となる。 \fItm_hour\fP | |
175 | +から計算される。 (GNU) | |
157 | 176 | .TP |
158 | 177 | \fB%r\fP |
159 | -午前・午後形式での時刻。 POSIX ロケールでは \fB%I:%M:%S %p\fP と等価である。(SU) | |
178 | +午前・午後形式での時刻。現在のロケールで使用される具体的なフォーマットは、引き数に \fBT_FMT_AMPM\fP を指定して | |
179 | +\fBnl_langinfo\fP(3) を呼び出すことで取得できる。 POSIX ロケールでは \fB%I:%M:%S %p\fP と等価である。 (SU) | |
160 | 180 | .TP |
161 | 181 | \fB%R\fP |
162 | 182 | 24 時間表記での時刻、秒は表示しない (\fB%H:%M\fP)。 秒を含んだものは以下の \fB%T\fP を参照すること。(SU) |
163 | 183 | .TP |
164 | 184 | \fB%s\fP |
165 | -紀元 (Epoch; 1970\-01\-01 00:00:00 +0000 (UTC)) からの秒数。 (TZ) | |
185 | +紀元 (Epoch; 1970\-01\-01 00:00:00 +0000 (UTC)) からの秒数。 \fImktime(tm)\fP から計算される。 | |
186 | +(TZ) | |
166 | 187 | .TP |
167 | 188 | \fB%S\fP |
168 | -秒 (10 進数表記) (00\-60) (時々ある閏秒に対応するため、値の範囲は 60 までとなっている) | |
189 | +秒 (10 進数表記) (00\-60)。時々ある閏秒に対応するため、値の範囲は 60 までとなっている。 \fItm_sec\fP から計算される。 | |
169 | 190 | .TP |
170 | 191 | \fB%t\fP |
171 | 192 | タブ文字 (SU) |
@@ -174,33 +195,40 @@ ISO\ 8601 週単位表記の年 (week\-based year; 「注意」の節を参照) | ||
174 | 195 | 24 時間表記の時間 (\fB%H:%M:%S\fP) (SU) |
175 | 196 | .TP |
176 | 197 | \fB%u\fP |
177 | -週の何番目の日 (10 進数表記) か。月曜日を 1 とする (1\-7)。 \fB%w\fP も参照。(SU) | |
198 | +週の何番目の日 (10 進数表記) か。月曜日を 1 とする (1\-7)。 \fB%w\fP も参照。 \fItm_wday\fP から計算される。 (SU) | |
178 | 199 | .TP |
179 | 200 | \fB%U\fP |
180 | 201 | 年の初めからの通算の週番号 (10 進数表記) (00\-53)。 その年の最初の日曜日を、第 1 週の始まりとして計算する。 \fB%V\fP と \fB%W\fP |
181 | -も参照すること。 | |
202 | +も参照すること。 \fItm_yday\fP と \fItm_wday\fP から計算される。 | |
182 | 203 | .TP |
183 | 204 | \fB%V\fP |
184 | -ISO\ 8601 形式での年の始めからの週番号 (「注意」の節を参照)。 10 進数表記で、01 から 53 の値となる。週番号は、 | |
185 | -新しい年が少なくとも 4 日以上含まれる最初の週を 1 として計算する。 \fB%U\fP と \fB%W\fP も参照のこと。(SU) | |
205 | +ISO\ 8601 形式での年の始めからの週番号 (「注意」の節を参照)。 10 進数表記で、01 から 53 | |
206 | +の値となる。週番号は、新しい年が少なくとも 4 日以上含まれる最初の週を 1 として計算する。 \fB%U\fP と \fB%W\fP も参照のこと。 | |
207 | +\fItm_year\fP, \fItm_yday\fP, \fItm_wday\fP から計算される。 (SU) | |
186 | 208 | .TP |
187 | 209 | \fB%w\fP |
188 | -週の何番目の日 (10 進数表記) か。日曜日を 0 とする。(0\-6)。 \fB%u\fP も参照。(SU) | |
210 | +週の何番目の日 (10 進数表記) か。日曜日を 0 とする。(0\-6)。 \fB%u\fP も参照。 \fItm_wday\fP から計算される。 | |
189 | 211 | .TP |
190 | 212 | \fB%W\fP |
191 | -年の初めからの通算の週番号 (10 進数表記) (00\-53)。 その年の最初の月曜日を、第 1 週の始まりとして計算する。 | |
213 | +年の初めからの通算の週番号 (10 進数表記) (00\-53)。 その年の最初の月曜日を、第 1 週の始まりとして計算する。 \fB%V\fP と \fB%W\fP | |
214 | +も参照すること。 \fItm_yday\fP と \fItm_wday\fP から計算される。 | |
192 | 215 | .TP |
193 | 216 | \fB%x\fP |
194 | -現在のロケールで一般的な日付表記。時刻は含まない。 | |
217 | +現在のロケールで一般的な日付表記。時刻は含まない。現在のロケールで使用される具体的なフォーマットは、 \fB%x\fP 変換指定の場合は \fBD_FMT\fP | |
218 | +を、 \fB%Ex\fP 変換指定の場合は \fBERA_D_FMT\fP を引き数に指定して、 \fBnl_langinfo\fP(3) を呼び出すことで取得できる。 | |
219 | +POSIX ロケールでは、これは \fB%m/%d/%y\fP と等価である。 | |
195 | 220 | .TP |
196 | 221 | \fB%X\fP |
197 | -現在のロケールで一般的な時刻表記。日付は含まない。 | |
222 | +現在のロケールで一般的な時刻表記。日付は含まない。現在のロケールで使用される具体的なフォーマットは、 \fB%X\fP 変換指定の場合は \fBT_FMT\fP | |
223 | +を、 \fB%EX\fP 変換指定の場合は \fBERA_T_FMT\fP を引き数に指定して、 \fBnl_langinfo\fP(3) を呼び出すことで取得できる。 | |
224 | +POSIX ロケールでは、これは \fB%H:%M:%S\fP と等価である。 | |
198 | 225 | .TP |
199 | 226 | \fB%y\fP |
200 | -西暦の下2桁 (世紀部分を含まない年) (00\-99)。 | |
227 | +西暦の下 2 桁 (世紀部分を含まない年) (00 から 99)。 \fB%Ey\fP 変換指定は。 \fB%EC\fP 変換指定で示される西暦以外の年数表記 | |
228 | +("era") における初めからの年数に対応する。 \fItm_year\fP から計算される。 | |
201 | 229 | .TP |
202 | 230 | \fB%Y\fP |
203 | -世紀部分を含めた ( 4 桁の) 西暦年。 | |
231 | +世紀部分を含めた 10 進表記の西暦年。 \fB%EY\fP 変換指定は別形式の年表記の完全な表現に対応する。 \fItm_year\fP から計算される。 | |
204 | 232 | .TP |
205 | 233 | \fB%z\fP |
206 | 234 | \fI+hhmm\fP や \fI\-hhmm\fP の形式のタイムゾーン (UTC へのオフセット時間)。(SU) |
@@ -211,20 +239,20 @@ ISO\ 8601 形式での年の始めからの週番号 (「注意」の節を参 | ||
211 | 239 | \fB%+\fP |
212 | 240 | .\" Nov 05 -- Not in Linux/glibc, but is in some BSDs (according to |
213 | 241 | .\" their man pages) |
214 | -\fBdate\fP(1) 形式での日時。(TZ) (glibc2 ではサポートされていない) | |
242 | +\fBdate\fP(1) 形式での日時。 glibc2 ではサポートされていない。 (TZ) | |
215 | 243 | .TP |
216 | 244 | \fB%%\fP |
217 | -\(aq%\(aq 文字。 | |
245 | +\(aq%\(aq 文字 | |
218 | 246 | .PP |
219 | 247 | いくつかの変換指定では、変換指定文字の前に \fBE\fP や \fBO\fP 「修飾子」を置くことによって別書式を使用するように指定することができる。 |
220 | 248 | 現在のロケールにおいて別書式が存在しない場合には、 通常の変換指定が使用されたかのように動作する (SU)。 統一 UNIX 規格 (Single |
221 | 249 | UNIX Specification) では \fB%Ec\fP, \fB%EC\fP, \fB%Ex\fP, \fB%EX\fP, \fB%Ey\fP, \fB%EY\fP, |
222 | 250 | \fB%Od\fP, \fB%Oe\fP, \fB%OH\fP, \fB%OI\fP, \fB%Om\fP, \fB%OM\fP, \fB%OS\fP, \fB%Ou\fP, \fB%OU\fP, |
223 | -\fB%OV\fP, \fB%Ow\fP, \fB%OW\fP, \fB%Oy\fP, について記述がある。ここで \fBO\fP 修飾子は別形式の数値 (ローマ数字とか) | |
224 | -を指定するために使用する。 \fBE\fP 修飾子はロケール依存の別表現を指定するのに使用する。 (訳注: \fBE\fP | |
225 | -修飾子は日本で使用されている「昭和」「平成」 などの元号による年表記を指定する。glibc 2.2 以降でのみ有効) | |
226 | -.PP | |
227 | -要素別の時刻構造体 \fItm\fP の詳細は \fI<time.h>\fP に定義されている。 \fBctime\fP(3) も参照すること。 | |
251 | +\fB%OV\fP, \fB%Ow\fP, \fB%OW\fP, \fB%Oy\fP, について記述がある。ここで \fBO\fP 修飾子は別形式の数値シンボル (ローマ数字とか) | |
252 | +を指定するために使用する。 \fBE\fP 修飾子はロケール依存の別表現を指定するのに使用する。 \fBE\fP | |
253 | +修飾子を使った場合のデータ表現に適用されるルールは、 \fBnl_langinfo\fP(3) の引き数に \fBERA\fP | |
254 | +を指定することで取得できる。このような別表現の例としては \fBja_JP\fP glibc ロケールでの日本の年号 (「昭和」「平成」など) | |
255 | +によるカレンダー表記がある。 | |
228 | 256 | .SH 返り値 |
229 | 257 | .\" (This behavior applies since at least libc 4.4.4; |
230 | 258 | .\" very old versions of libc, such as libc 4.4.1, |
@@ -234,36 +262,51 @@ UNIX Specification) では \fB%Ec\fP, \fB%EC\fP, \fB%Ex\fP, \fB%EX\fP, \fB%Ey\fP | ||
234 | 262 | 終端のヌルバイトを含めた結果の文字列の長さが \fImax\fP バイトを超えなかった場合、 \fBstrftime\fP() 関数は配列 \fIs\fP |
235 | 263 | に格納されたバイト数を返す (このバイト数に終端のヌルバイトは含まれない)。 終端のヌルバイトを含めた結果の文字列の長さが \fImax\fP |
236 | 264 | バイトを超える場合には、 \fBstrftime\fP() は 0 を返し、配列の内容は不定となる。 |
237 | -.LP | |
238 | -返り値 0 は必ずしもエラーを意味している訳ではないので注意すること。 例えば、多くのロケールでは \fB%p\fP は空文字列を返す。 同様に、空の | |
265 | +.PP | |
266 | +返り値 0 は必ずしもエラーを意味している訳ではないので注意すること。例えば、多くのロケールでは \fB%p\fP は空文字列を返す。同様に、空の | |
239 | 267 | \fIformat\fP 文字列は空文字列を返す。 |
240 | 268 | .SH 環境変数 |
241 | 269 | 環境変数 \fBTZ\fP と \fBLC_TIME\fP が使用される。 (訳注: \fBLC_ALL\fP が設定されている場合には \fBLC_TIME\fP |
242 | 270 | よりもそちらが優先される。 \fBLC_TIME\fP も \fBLC_ALL\fP も設定されていない場合には \fBLANG\fP が使用される。) |
271 | +.SH 属性 | |
272 | +この節で使用されている用語の説明については、 \fBattributes\fP(7) を参照。 | |
273 | +.TS | |
274 | +allbox; | |
275 | +lb lb lb | |
276 | +l l l. | |
277 | +インターフェース 属性 値 | |
278 | +T{ | |
279 | +\fBstrftime\fP() | |
280 | +T} Thread safety MT\-Safe env locale | |
281 | +.TE | |
243 | 282 | .SH 準拠 |
244 | -SVr4, C89, C99. 個々の変換が厳密にどの規格に含まれるかは、 ANSI C (印なし)、統一 UNIX 規格 (SU印)、Olson の | |
245 | -timezone パッケージ (TZ印)、 glibc 独自 (GNU印) で示している。glibc2 では \fB%+\fP はサポートされていないが、 | |
246 | -いくつかの拡張が行われている。POSIX.1 では ANSI C のみを参照している。 POSIX.2 の \fBdate\fP(1) | |
247 | -のところに記述されている幾つかの拡張は \fBstrftime\fP() にも適用できるだろう。 \fB%F\fP 変換は C99 と POSIX.1\-2001 | |
248 | -にある。 | |
249 | - | |
250 | -SUSv2 では、 \fB%S\fP は 00 から 61 の範囲をとると規定されている。 これは、1分間のうち閏秒が 2つ入る可能性が理論的にはあることを | |
251 | -考慮してのものである (実際には、このような状況はこれまで一度も 起こっていない)。 | |
283 | +.\" FIXME strftime() is in POSIX.1-2001 and POSIX.1-2008, but the details | |
284 | +.\" in the standards changed across versions. Investigate and | |
285 | +.\" write up. | |
286 | +SVr4, C89, C99. 個々の変換が厳密にどの規格に含まれるかをマークで示している。「マークなし」は ANSI C、「SU」は統一 UNIX | |
287 | +規格を、「TZ」は Olson の timezone パッケージ、「GNU」は glibc を示す。 glibc2 では \fB%+\fP | |
288 | +はサポートされていないが、 いくつかの拡張が行われている。POSIX.1 では ANSI C のみを参照している。 POSIX.2 の | |
289 | +\fBdate\fP(1) のところに記述されている幾つかの拡張は \fBstrftime\fP() にも適用できるだろう。 \fB%F\fP 変換は C99 と | |
290 | +POSIX.1\-2001 にある。 | |
291 | +.PP | |
292 | +SUSv2 では、 \fB%S\fP は 00 から 61 の範囲をとると規定されている。 これは、1 分間のうち閏秒が 2 | |
293 | +つ入る可能性が理論的にはあることを考慮してのものである (実際には、このような状況はこれまで一度も 起こっていない)。 | |
252 | 294 | .SH 注意 |
253 | -.SS "ISO\ 8601 の週・曜日表記 (Week Dates)" | |
295 | +.SS "ISO\ 8601 の暦週日付" | |
254 | 296 | \fB%G\fP, \fB%g\fP, \fB%V\fP は、ISO\ 8601 標準により定義された週単位表記の年により 計算される値を出力する。 ISO\ 8601 |
255 | 297 | 標準の週単位表記では、週は月曜日から開始され、 週番号は、年の最初の週が 01 となり、最後の週は 52 か 53 となる。 週 01 は、新しい年が |
256 | 298 | 4 日以上含まれる最初の週である。 言い換えると、週 01 は、その年の木曜日を含む最初の週、 つまり 1 月 4 日を含む週ということである。 |
257 | 299 | 新しい年のカレンダー上の最初の週に新しい年が 3 日以下しか含まれない場合、 ISO\ 8601 の週単位表記では、これらの日を前の年の週 53 |
258 | 300 | の一部とみなす。 例えば、2010 年 1 月 1 日は金曜日であり、 その週には 2010 年の日が 3 日しか含まれない。 したがって、ISO\ 8601 の週単位表記では、これらの日は 2009 年 (\fB%G\fP) の週 53 (\fB%V\fP) の一部となる。 ISO\ 8601 の 2010 |
259 | -年の週 01 は 2010 年 1 月 4 日の月曜日から始まる。 | |
301 | +年の週 01 は 2010 年 1 月 4 日の月曜日から始まる。同様に、 2011 年 1 月の最初の 2 日は 2010 年の週 52 | |
302 | +の一部とみなされる。 | |
260 | 303 | .SS "glibc での注意" |
261 | 304 | .\" HP-UX and Tru64 also have features like this. |
262 | 305 | glibc では変換指定にいくつか拡張を行っている (これらの拡張は POSIX.1\-2001 には規定されていないが、 |
263 | -他のいくつかのシステムで同様の機能が提供されている)。 \(aq%\(aq 文字と変換指定文字の間に、オプションとして \fIflag\fP とフィールドの | |
306 | +他のいくつかのシステムで同様の機能が提供されている)。 \(aq%\(aq 文字と変換指定文字の間に、オプションとして \fIフラグ\fP とフィールドの | |
264 | 307 | \fI幅\fP を指定できる (これらを指定する場合には \fBE\fP や \fBO\fP 修飾子の前に置く)。 |
265 | - | |
266 | -以下のフラグ文字が使用できる: | |
308 | +.PP | |
309 | +以下のフラグ文字が使用できる。 | |
267 | 310 | .TP |
268 | 311 | \fB_\fP |
269 | 312 | (下線) 数値の結果文字列のパディング (穴埋め) をスペース (空白文字) で行う。 |
@@ -274,65 +317,72 @@ glibc では変換指定にいくつか拡張を行っている (これらの拡 | ||
274 | 317 | \fB0\fP |
275 | 318 | 変換指定文字がデフォルトではスペースでパディングを行う場合でも、 数値の結果文字列へのパディングを 0 で行う。 |
276 | 319 | .TP |
277 | -\fB^\fP | |
320 | +\fB\(ha\fP | |
278 | 321 | 結果文字列中のアルファベット文字を大文字に変換する。 |
279 | 322 | .TP |
280 | 323 | \fB#\fP |
281 | 324 | 結果文字列の大文字・小文字を入れ替える (このフラグは特定の変換指定文字でしか機能しない。その中でも 本当に有用なのは \fB%Z\fP の場合だけである)。 |
282 | 325 | .PP |
283 | -オプションの10進数の幅指定子はフラグの後ろに置くことができる (フラグはなくてもよい)。フィールドの本来の大きさが指定された幅よりも | |
326 | +オプションの 10 進数の幅指定子はフラグの後ろに置くことができる (フラグはなくてもよい)。フィールドの本来の大きさが指定された幅よりも | |
284 | 327 | 小さい場合、結果文字列の左側は指定された幅までパディングされる。 |
285 | 328 | .SH バグ |
286 | -出力文字列が \fImax\fP バイトを超えてしまう場合、 \fIerrno\fP は設定「されない」。 このため、このエラーを、 \fIformat\fP | |
287 | -文字列がきちんと処理されて長さ 0 の出力文字列が生成される場合を区別することができない。 POSIX.1\-2001 では \fBstrftime\fP() | |
288 | -で \fIerrno\fP に設定する値について一切規定して「いない」。 | |
289 | - | |
329 | +出力文字列が \fImax\fP バイトを超えてしまう場合、 \fIerrno\fP は設定「されない」。 このため、このエラーと、 \fIformat\fP | |
330 | +文字列がきちんと処理されて長さ 0 の出力文字列が生成される場合、を区別することができない。 POSIX.1\-2001 では \fBstrftime\fP() | |
331 | +に関して \fIerrno\fP に設定される値について一切規定して「いない」。 | |
332 | +.PP | |
290 | 333 | \fBgcc\fP(1) のいくつかのバージョンにはおかしなところがあり、 \fB%c\fP の使用法について以下のような警告を出す: \fIwarning: |
291 | -`%c' yields only last 2 digits of year in some locales\fP | |
292 | -(\fI警告:\fPいくつかのロケールでは\fI`%c'\fPは年の下2桁しか出力しない\fI)。\fP もちろんプログラマが \fB%c\fP | |
293 | -を使うのはお薦めできることである。 \fB%c\fP を使うと適切な日付と時刻の表記を得ることができるからである。 \fBgcc\fP(1) | |
294 | -のこの問題を回避しようとすると、何かすっきりしない気分になるだろう。 比較的きれいな解決方法は以下のような中間関数を追加することである。 | |
334 | +`%c\(aq yields only last 2 digits of year in some locales\fP (\fI警告:\fP | |
335 | +いくつかのロケールでは \fI`%c\(aq\fP は年の下2桁しか出力しない\fI)。\fP もちろんプログラマが \fB%c\fP を使うのはお薦めできることである。 | |
336 | +\fB%c\fP を使うと適切な日付と時刻の表記を得ることができるからである。 \fBgcc\fP(1) | |
337 | +のこの問題を回避しようとすると、何かすっきりしない気分になるだろう。 比較的きれいな回避策は以下のような中間関数を追加することである。 | |
338 | +.PP | |
295 | 339 | .in +4n |
296 | -.nf | |
297 | - | |
340 | +.EX | |
298 | 341 | size_t |
299 | 342 | my_strftime(char *s, size_t max, const char *fmt, |
300 | 343 | const struct tm *tm) |
301 | 344 | { |
302 | 345 | return strftime(s, max, fmt, tm); |
303 | 346 | } |
304 | -.fi | |
347 | +.EE | |
305 | 348 | .in |
306 | - | |
349 | +.PP | |
307 | 350 | 現在では、 \fBgcc\fP(1) はこの警告を抑えるための \fI\-Wno\-format\-y2k\fP オプションを |
308 | 351 | 提供しており、上記の回避策はもはや必要ない。 |
309 | 352 | .SH 例 |
310 | 353 | \fBRFC\ 2822 準拠の日付形式\fP (%a と %b は英語ロケール) |
311 | 354 | .PP |
312 | -.in +2n | |
313 | -"%a,\ %d\ %b\ %Y\ %T\ %z" | |
355 | +.in +4n | |
356 | +.EX | |
357 | + "%a,\ %d\ %b\ %Y\ %T\ %z" | |
358 | +.EE | |
359 | +.in | |
314 | 360 | .PP |
315 | 361 | \fBRFC\ 822 準拠の日付形式\fP (%a と %b は英語ロケール) |
316 | 362 | .PP |
317 | -.in +2n | |
318 | -"%a,\ %d\ %b\ %y\ %T\ %z" | |
363 | +.in +4n | |
364 | +.EX | |
365 | + "%a,\ %d\ %b\ %y\ %T\ %z" | |
366 | +.EE | |
367 | +.in | |
319 | 368 | .SS サンプルプログラム |
320 | -以下のプログラムを使うと \fBstrftime\fP() の実験ができる。 | |
369 | +以下のプログラムを使うと \fBstrftime\fP() の実験ができる。 | |
370 | +.PP | |
371 | +以下に \fBstrftime\fP() の glibc 実装が生成する結果の例をいくつか示す。 | |
321 | 372 | .PP |
322 | -以下に、 \fBstrftime\fP() の glibc 実装が生成する結果の例をいくつか示す: | |
323 | 373 | .in +4n |
324 | -.nf | |
325 | - | |
374 | +.EX | |
326 | 375 | $\fB ./a.out \(aq%m\(aq\fP |
327 | 376 | Result string is "11" |
328 | 377 | $\fB ./a.out \(aq%5m\(aq\fP |
329 | 378 | Result string is "00011" |
330 | 379 | $\fB ./a.out \(aq%_5m\(aq\fP |
331 | 380 | Result string is " 11" |
332 | -.fi | |
381 | +.EE | |
333 | 382 | .in |
334 | 383 | .SS プログラムのソース |
335 | -.nf | |
384 | +\& | |
385 | +.EX | |
336 | 386 | #include <time.h> |
337 | 387 | #include <stdio.h> |
338 | 388 | #include <stdlib.h> |
@@ -359,11 +409,10 @@ main(int argc, char *argv[]) | ||
359 | 409 | printf("Result string is \e"%s\e"\en", outstr); |
360 | 410 | exit(EXIT_SUCCESS); |
361 | 411 | } |
362 | -.fi | |
412 | +.EE | |
363 | 413 | .SH 関連項目 |
364 | -\fBdate\fP(1), \fBtime\fP(2), \fBctime\fP(3), \fBsetlocale\fP(3), \fBsprintf\fP(3), | |
365 | -\fBstrptime\fP(3) | |
414 | + \fBdate\fP(1), \fBtime\fP(2), \fBctime\fP(3), \fBnl_langinfo\fP(3), \fBsetlocale\fP(3), | |
415 | +\fBsprintf\fP(3), \fBstrptime\fP(3) | |
366 | 416 | .SH この文書について |
367 | -この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.79 の一部 | |
368 | -である。プロジェクトの説明とバグ報告に関する情報は | |
369 | -http://www.kernel.org/doc/man\-pages/ に書かれている。 | |
417 | +この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 5.10 の一部である。プロジェクトの説明とバグ報告に関する情報は | |
418 | +\%https://www.kernel.org/doc/man\-pages/ に書かれている。 |
@@ -1919,7 +1919,7 @@ | ||
1919 | 1919 | ※:LDP man-pages:5.10:2019/03/06:strfromf:3:strfromd:3: |
1920 | 1920 | ※:LDP man-pages:5.10:2019/03/06:strfroml:3:strfromd:3: |
1921 | 1921 | ○:LDP man-pages:5.10:2019/03/06:strfry:3:2021/04/13::motoki@hal.t.u-tokyo.ac.jp:Akihiro Motoki: |
1922 | -■:LDP man-pages:3.79=>5.10:2020/08/13:strftime:3:2021/04/13::amotoki@gmail.com:Akihiro Motoki: | |
1922 | +○:LDP man-pages:5.10:2020/08/13:strftime:3:2021/06/20::amotoki@gmail.com:Akihiro Motoki: | |
1923 | 1923 | ○:LDP man-pages:5.10:2019/03/06:string:3:2021/04/13::yoshino@civil.jcn.nihon-u.ac.jp:YOSHINO Takashi: |
1924 | 1924 | ○:LDP man-pages:5.10:2019/03/06:strlen:3:2021/04/13::amotoki@gmail.com:Akihiro Motoki: |
1925 | 1925 | @:LDP man-pages:5.10:2017/09/15:strncasecmp:3:strcasecmp:3: |