人、時間、物、金を扱うプログラムは難しくなる
そんな中で時間を扱ったのでメモ
まずJavaで日付を使用するには以下をインポートする必要がある。
import java.util.Date;
その後はいつものインスタンス化
//日付のインスタンス化
Date date = new Date();
で、今回は過去日をエラーとする処理を組むので2つの処理を入れました。
今回は日付のみで時間だけでエラーチェックするようなので以下のファイルもインポートしました。
import java.text.ParseException;
import java.text.SimpleDateFormat;
java.text.ParseExceptionは日付型から文字列に変更するヤツです。
java.text.SimpleDateFormatは「YYYY-MM-DD」とかに変更できるヤツです。
String nowDate = sdFormat.format(date);
まずは、SimpleDateFormatで現在日を取得します。
サーバーから現在日取れるのは便利ですね。
checkDate = sdFormat.parse(checkStr);
その後、ParseExceptionでString型をData型に変換します。
これはtry/catchでくくらないとeclipceから怒られます。
それでなんだかんだ試行錯誤してみたのがコチラ
if (date.after(checkDate)) {
if(!nowDate.equals(checkStr)) {
//エラーの時の処理を書く
}
}
date.afterと同じ日付の時はエラーにしました。
これで「選択日 > 日付」の場合エラーになります。
PHPは型操作とかあまり気にせず組めましたが、Javaは型をキッチリ宣言して、変更するときも明示しないといけないので大変ですね。
そしてJSPに書いたHTML5ですが…
<input type="date" name="date" required value=<%=dateStr %>>
日付型凄く便利ですね。
valueに値を入れたら初期値としてセットされますし。
従来なら「8桁の数字で入力してください。」とか注釈を入れたもんですが。
「YYYY-MM-DD」形式で値を飛ばしてくれるので非常に楽です。
操作する側もカレンダーが表示されて選択できますし、双方に利があって凄く便利でした。