ひよっこSEのコツコツ備忘録

システム開発に携わる中で、知識として学んだことや覚えたことを書き綴っています。

Java

【Java】日付妥当性チェック

投稿日:2014年1月9日 更新日:

画面から入力された値が日付として妥当かどうかをチェックする方法。

ここで言ってる「妥当かどうか」と言うのは、

① そもそもそんな日付が存在するのか
(2014年10月40日とか、うるう年とか・・・)

② 想定している書式で日付が入力されているか
“2014/01/23”の書式を期待していたのに“20140123”と入力されたとか・・・)

この2つ。入力された値がこの2つを満たしているかどうかをチェックする。

 

 

やっていることは、チェック対象文字列のDate型への変換。

変換できれば妥当性OK、変換できなければ妥当性NG。

んで、変換する際の「日付文字列はこの書式で受け取りますよ~」というものを、SimpleDateFormatオブジェクト作成時のパラメータに指定している感じ。

んで、ポイントとしてはSimpleDateFormatオブジェクトのsetLenient(false)。この設定をすることで、日付の厳密な解析を行ってくれるようになるんで、この設定が漏れると日付の値のチェックをしてくれない。(上の①のチェックをしてくれない)

ちなみに、SimpleDateFormatオブジェクトに“yyyy/MM/dd”という書式を指定した場合、“2014/01/09”“2014/1/9”も妥当性OK。でも、“yyyyMMdd”という書式を指定した場合は、“20140109”はOKで“201419”はNG。

-Java
-

執筆者:


comment

メールアドレスが公開されることはありません。

CAPTCHA


関連記事

【Java】日付の計算(加算と減算)

システム日付や任意の日付に対して加算や減算を行うには、Calendarクラスを使用する。 下のサンプルでは、システム日付を保持したCalendarオブジェクトに対して日数などの加減算を行い、結果をyy …

【Java】for文と拡張for文の速度比較

普通のfor文と拡張for文、以前どこかで「拡張for文は内部的に云々カンヌンなため、パフォーマンス的には通常のfor文に劣る」っていう記述を見たことがある気がしたので、実際に速度を比べてみた。 [c …

【Java】nullか空文字のチェック(isNullOrEmpty)

文字列が「nullもしくは空文字」であることをチェックする場合、C#ではstringクラスにisNullOrEmptyという便利なメソッドが用意されていたりするけど、Javaにはそれがない。 というこ …

【Java】数値に変換できる文字列かチェック

文字列を数値に変換できるかどうかのチェック。 apacheのライブラリに便利な関数があるみたいだけど、Java標準の機能だけでチェックする2つのやり方をメモ。 目次1 try-catchでNumber …

【Java】StringTokenizerクラスで文字列分割

文字列をカンマやスペースなど、任意の区切り文字で分割する方法。 やり方は多分いろいろあるけど、今回はStringTokenizerクラスを使用するやり方。 [crayon-5c0fa963d48c59 …