- ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:日付チェックについて。)
文字列の日付妥当性チェックについて、SimpleDateFormat#parseに関する疑問
このQ&Aのポイント
- 文字列の日付妥当性チェックについて、SimpleDateFormat#parseについて疑問があります。
- 先日、末尾が英字でも例外が発生しないことに気づきましたが、途中に存在すると例外が発生することがあります。
- 末尾に英字があってもOKなのは仕様なのでしょうか?JDKのバージョンは1.4と1.5で確認しました。
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
あ, すみません, 勢い余って最後の l まで消しちゃいました. んで勢いついでに調べてみたんですが 仕様 だと思われます. より正確にいうと, yyyyMMdd では数字を期待するので 文字列の先頭から調べていって「数字のみの部分」が OK っぽければ OK という豪快な仕様でしょう. ちなみにこの場合, yyyy と MM はそれぞれ 4文字及び 2文字必要ですが最後の d は 1文字で十分だったりします. ということで, "2000011a" を与えると 2000011 の部分を調べて 2000 01 1 と解析します. 一方 "200001a1" では 200001 の部分を調べたときに桁数が足りない (7桁必要なところ 6桁しかない) ので例外が飛ぶ, と. もちろん "2000011a+b=あれ?" とかでも OK です. # 結局 Google に頼る (苦笑)
その他の回答 (1)
- Tacosan
- ベストアンサー率23% (3656/15482)
回答No.1
なんで「グーグル先生」なんだろう. ちゃんとしたところで調べればいいのに.
質問者
お礼
お返事有難うございます。 教えて頂いたURLですが、なぜかエラーになってしまいました。 URLを見た感じだと1.6のjavadocのようですが、申し訳ありません。グーグル先生の前にjavadocも確認してはいるのですが、それらしい記述を見つけることができませんでした。 アドバイス頂いたようにもう一度javadocを見てみたのですが、やはりわかりませんでした。もう少し教えて頂けないでしょうか。
お礼
お返事有難うございます。 詳しく説明して頂いて有難うございました。とてもわかりやすかったです。 確かに豪快な仕様ですね(笑)。 参考URLもとても参考になりました。 これからは数値チェック等あわせて実装したいと思います。それなりにjavaを使っていたのですが、今まで気づかなかったのでとても勉強になりました。