2011-10-18 3 views
0

文字列 "2011-12-12"をstrptimeを使って時間値に変換しようとしています。誰かがなぜこれがうまくいかないか説明できますか?ドキュメントによればCでstrptime()を使って "%y-%m-%d"を変換できない

フォーマットはゼロまたはそれ以上の指令から構成されています。各ディレクティブは、以下のいずれかで構成されています:1つ以上の空白文字(isspace()で指定)普通の文字( '%'も空白文字もない)。または変換仕様。

if(strptime(date, "%y-%m-%d", &tm) != NULL) 
+0

'%-'は変換仕様ですか? – Nemo

+0

私は間違いを犯しました。最初は試してみましたが、テストのため%に変更しました。両方のケースが失敗しました。投稿時に '%'を削除するのを忘れました。 – Begui

答えて

4

the documentationを見てみましょう。 %y指定子は2桁の年で、世紀は含まず、%Yは世紀を含む通年です。入力文字列に%yを使用すると、年は20と解釈され、残りの文字列(11-12-12)は-%m-%dと一致しないため、解析が失敗します。

%Y(推奨)を使用するか、入力を2桁の日付(強くではなくを推奨)に変更してください。

+0

私はもう少し読むことを学ぶ必要があると思う..ありがとうアダム。 – Begui

関連する問題