EN JA
STRPTIME(3)
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_sectm_min のみ修正されます。今日に関連する時間が望まれるなら、 strptime() に渡す前に今日の日付で timeptr 構造体を初期化してください。

戻り値

成功して終了した場合、 strptime() は、 format 中の変換指定を満たすためには必要とされなかった buf 中の最初の文字へのポインタを返します。変換が一つでも失敗した場合は、 NULL を返します。 strptime_l() 関数は、 strptime() と同じ値を返します。

関連項目

date(1), scanf(3), strftime(3)

歴史

strptime() 関数は、 FreeBSD 3.0 で登場しました。

作者

strptime() 関数は、 Powerdog Industries によって寄贈されました。

このマニュアルページは、 Jörg Wunsch によって書かれました。

バグ

形式指示子 %e%l の両方は、もし意図された値が 1 桁の数値だけで成り、数値のすぐ後に他の数値が続く場合、 1 桁を越えて不正確なスキャンを行います。詰めていない値を取得するように定義されている場合でも、両方の指示子は、0 を詰めた値を受け入れます。

形式指示子 %p は、時間に関連する変換指示子の 後で それが解析されるまで、効果がありません。 %p なしの形式指示子 %l は、不確定の結果を生成します。 12AM (午前) は、深夜を指し、12PM (午後) は、正午を指しすことに注意してください。

形式指示子 %U%W は、供給された (例えば年の月や日のような) 他の値に対して、確認することなしに 00 から 53 の範囲内のどんな値も受け入れます。

形式指示子 %Z は、地域時間ゾーンか "GMT"の時間帯の略称のみ受け入れます。この制限は、時間帯の略称のオーバロードが曖昧なためです。たとえば一つの例として EST は、東部標準時と東部オーストラリア夏時間となります。

strptime() 関数は、 format 引数でマルチバイト文字を正確に操作しません。

June 25, 2012 FreeBSD