画面上で入力した日付の文字列を、javaサーバ側で日付に変更したとき、ありえない日付文字列を受けて、java側は正しくカレンダー日付に勝手に変わって受け付けました。調査した結果:例え20130732のような日付文字列に対して、javaは20130801と勝手に変わって受ける。同様に、20130700は20130630に勝手に変わる。
ここでは、setLenientメッソドで日付・時刻の妥当性をチェックする方法です。
import java.text.SimpleDateFormat;
import java.util.Calendar;
public class CalendarWithLenient {
/**
* @param args
*/
public static void main(String[] args) {
// Calendarクラスのオブジェクトcal1を生成しています。
Calendar cal1 = Calendar.getInstance();
// setLenientメソッドでfalseを設定しています。
cal1.setLenient(false);
// setメソッドで存在しない日付2013年7月32日を設定しています。
cal1.set(2013, 6, 31);
SimpleDateFormat sdf1 = new SimpleDateFormat("yyyy'年'MM'月'dd'日'");
try {
System.out.println(sdf1.format(cal1.getTime()) + "は正しく日付です。");
}
// 存在しない日付のため例外がスローされます。
catch (IllegalArgumentException e) {
// e.printStackTrace();
System.out.println("存在しない日付です。");
}
}
}
生活三昧@zanmai.net
♪ 当記事がお役に立ちましたらシェアして頂ければ嬉しいです。
★ 当記事を閲覧の方は下記の【関連記事】も閲覧していました。
zanmai @2016年03月31日
» ①②③④の順で設定できるはず。…