[Java]SimpleDateFormat#parseで末尾英字の入力値がエラーにならないアレ

めも。Salesforceから連携してきた「誕生日」項目の入力値チェックがなんだかうまくいかないよー。
これ→DateFormatは前方一致だったのか

SimpleDateFormatは前からパースしてOKそうならそれっぽく変換されるため(厳密モードにしていても)、末尾に英字が入っててもエラーにならず予期しない日付に変換されてしまうとかいうアレ。今回は英字が入ってる場合は不正な入力値扱いしてnullにしたいので、上記エントリで紹介されているようにParsePositionをparseに渡してindexとフォーマット文字列の長さ比較して妥当性チェックする感じで乗り切る。まーたハマってしまった。
そもそも「誕生日」項目のくせにSalesforce上でテキスト型で持ってるのがおかしい。ふつうに日付型で持っとけつーの。誕生日を元に数式で年齢算出してるんだからなおさら。


コメントを残す