文字列「2011-12-12」をstrptimeを使って時間値に変換しようとしています。誰かがこれがうまくいかない理由を説明できますか?
ドキュメントによると:
形式は、0 個以上のディレクティブで構成されます。各ディレクティブは、次のいずれかで構成されます。1 つまたは複数の空白文字 (isspace() で指定)。通常の文字 (「%」でも空白文字でもない); または変換仕様。
if( strptime(date, "%y-%m-%d", &tm) != NULL)
ドキュメントを見てください。%y
指定子は、世紀を含まない 2 桁の年を表しますが、世紀%Y
を含む完全な年を表します。入力文字列でを使用する%y
と、年が として解析されますが20
、残りの文字列 ( 11-12-12
) が一致しないため-%m-%d
、解析は失敗します。
書式文字列を使用するように変更するか%Y
(推奨)、入力を変更して 2 桁の日付を使用するようにします (強くお勧めしません)。