• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:日付チェックについて。)

文字列の日付妥当性チェックについて、SimpleDateFormat#parseに関する疑問

このQ&Aのポイント
  • 文字列の日付妥当性チェックについて、SimpleDateFormat#parseについて疑問があります。
  • 先日、末尾が英字でも例外が発生しないことに気づきましたが、途中に存在すると例外が発生することがあります。
  • 末尾に英字があってもOKなのは仕様なのでしょうか?JDKのバージョンは1.4と1.5で確認しました。

質問者が選んだベストアンサー

  • ベストアンサー
  • Tacosan
  • ベストアンサー率23% (3656/15482)
回答No.2

あ, すみません, 勢い余って最後の l まで消しちゃいました. んで勢いついでに調べてみたんですが 仕様 だと思われます. より正確にいうと, yyyyMMdd では数字を期待するので 文字列の先頭から調べていって「数字のみの部分」が OK っぽければ OK という豪快な仕様でしょう. ちなみにこの場合, yyyy と MM はそれぞれ 4文字及び 2文字必要ですが最後の d は 1文字で十分だったりします. ということで, "2000011a" を与えると 2000011 の部分を調べて 2000 01 1 と解析します. 一方 "200001a1" では 200001 の部分を調べたときに桁数が足りない (7桁必要なところ 6桁しかない) ので例外が飛ぶ, と. もちろん "2000011a+b=あれ?" とかでも OK です. # 結局 Google に頼る (苦笑)

参考URL:
http://d.hatena.ne.jp/masanobuimai/20070206
_alias_
質問者

お礼

お返事有難うございます。 詳しく説明して頂いて有難うございました。とてもわかりやすかったです。 確かに豪快な仕様ですね(笑)。 参考URLもとても参考になりました。 これからは数値チェック等あわせて実装したいと思います。それなりにjavaを使っていたのですが、今まで気づかなかったのでとても勉強になりました。

その他の回答 (1)

  • Tacosan
  • ベストアンサー率23% (3656/15482)
回答No.1

なんで「グーグル先生」なんだろう. ちゃんとしたところで調べればいいのに.

参考URL:
http://java.sun.com/javase/ja/6/docs/ja/api/java/text/SimpleDateFormat.htm
_alias_
質問者

お礼

お返事有難うございます。 教えて頂いたURLですが、なぜかエラーになってしまいました。 URLを見た感じだと1.6のjavadocのようですが、申し訳ありません。グーグル先生の前にjavadocも確認してはいるのですが、それらしい記述を見つけることができませんでした。 アドバイス頂いたようにもう一度javadocを見てみたのですが、やはりわかりませんでした。もう少し教えて頂けないでしょうか。

関連するQ&A