STRPTIME(3)

名称
strptime - 日付および時刻を表す文字列を解釈する

ライブラリ
libc

書式
#include <time.h> char * strptime(const char *buf, const char *format, struct tm *timeptr)

解説
strptime() 関数は、バッファ buf 中の文字列を format で示される文字列に従って解釈し、 timeptr が指す構造体の要素に入れます。 この結果は地域時間に適切に合わされます。 したがって、これは strftime(3) の逆方向の操作と考えることができます。

format 文字列は、 0 以上の変換則と通常文字からなります。 すべての通常文字は、バッファと厳密にマッチされます。 そして、フォーマット文字列の空白文字は バッファ中の任意の数の空白文字とマッチします。 すべての変換則は、 strftime(3) に記述したものと同じです。

形式に含まれる %y で示される 2 桁の年の値、および %D は、 POSIX 要求仕様によって 1969 年から始まるように解釈されます。 年が 69-00 の場合は 20 世紀 (1969-2000) と、 年が 01-68 の場合は 21 世紀 (2001-2068) と解釈されます。

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

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

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

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

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

バグ
変換形式 %e と %l の両方は もし意図された値が一桁の数値だけで成り、 かつその数値にすぐに続けて他の整数が続く場合、 一桁を越えて不正確なスキャンを行います。 これらの変換形式には、たとえ詰めていない値を取得する場合でも 0 詰めした値を渡してください。

変換形式 %p は時間を示す変換形式が解析された 後 でないと意味を持ちません。 変換形式 %l は %p が無いと未定義の結果を作り出します。 注 12AM (午前) は深夜を指し、12PM (午後) は正午を指します。

変換仕様 %U と %W は他の値 (例えば年の中の月や日など) を取得する場合とは対照に、 正当性の検査なしに 00 から 53 の範囲の中での値を受け付けます。

変換仕様 %Z は時間帯として省略された地域時間か "GMT" のみを受け付けます。 この制限は多義的な時間帯の省略がオーバロードされる場合に影響します。 たとえば一つの例として EST は東部標準時と東部オーストラリア夏時間が挙げられます。