STRPTIME(3) | FreeBSD Library Functions Manual | STRPTIME(3) |
名称
strptime — 日付と時刻の文字列を解析するライブラリ
Standard C Library (libc, -lc)書式
#include < time.h> char *
strptime( const char * restrict buf, const char * restrict format, struct tm * restrict timeptr);
#include < time.h>
#include < xlocale.h>
char *
strptime_l( const char * restrict buf, const char * restrict format, struct tm * restrict timeptr, locale_t loc);
解説
strptime() 関数は、バッファ buf 中の文字列を format で指される文字列に従って解析し、 timeptr で指される構造体の要素に詰めます。結果の値は、地域時間ゾーンに関連づけられます。したがって、これは、 strftime(3) の逆方向の操作と考えることができます。 strptime_l() 関数は、 strptime() と同じこと行いますが、現在のロケールを使用するのではなく明示的なロケールを試みます。format 文字列は、0 以上の変換指示と通常文字からなります。すべての通常文字は、バッファと正確にマッチされます。そして、フォーマット文字列の空白文字は、バッファ中の任意の数の空白文字とマッチします。すべての変換指示は、 strftime(3) に記述したものと同じです。
形式に含まれる %y と %D で示される 2 桁の年の値は、 POSIX 要求仕様によって 1969 年から始まるように解釈されます。年 69-00 は、20 世紀 (1969-2000) と解釈され、年 01-68 は、21 世紀 (2001-2068) と解釈されます。
format 文字列が結果の struct tm を完全に指定するための十分な変換指示を含んでいなければ、 timeptr の明記されていないメンバは、そのまま残されます。例えば、 format が“ %H:%M:%S
”なら tm_hour, tm_sec と tm_min のみ修正されます。今日に関連する時間が望まれるなら、 strptime() に渡す前に今日の日付で timeptr 構造体を初期化してください。
戻り値
成功して終了した場合、 strptime() は、 format 中の変換指定を満たすためには必要とされなかった buf 中の最初の文字へのポインタを返します。変換が一つでも失敗した場合は、 NULL を返します。 strptime_l() 関数は、 strptime() と同じ値を返します。歴史
strptime() 関数は、 FreeBSD 3.0 で登場しました。作者
strptime() 関数は、 Powerdog Industries によって寄贈されました。このマニュアルページは、
によって書かれました。バグ
形式指示子 %e と %l の両方は、もし意図された値が 1 桁の数値だけで成り、数値のすぐ後に他の数値が続く場合、 1 桁を越えて不正確なスキャンを行います。詰めていない値を取得するように定義されている場合でも、両方の指示子は、0 を詰めた値を受け入れます。形式指示子 %p は、時間に関連する変換指示子の 後で それが解析されるまで、効果がありません。 %p なしの形式指示子 %l は、不確定の結果を生成します。 12AM (午前) は、深夜を指し、12PM (午後) は、正午を指しすことに注意してください。
形式指示子 %U と %W は、供給された (例えば年の月や日のような) 他の値に対して、確認することなしに 00 から 53 の範囲内のどんな値も受け入れます。
形式指示子 %Z は、地域時間ゾーンか "GMT"の時間帯の略称のみ受け入れます。この制限は、時間帯の略称のオーバロードが曖昧なためです。たとえば一つの例として EST は、東部標準時と東部オーストラリア夏時間となります。
strptime() 関数は、 format 引数でマルチバイト文字を正確に操作しません。
June 25, 2012 | FreeBSD |