考虑一下代码段:
String dateStr = "Mon Jan 32 00:00:00 IST 2015"; // 32 Jan 2015
DateFormat formatter = new SimpleDateFormat("E MMM dd HH:mm:ss Z yyyy");
DateFormat ddMMyyyy = new SimpleDateFormat("dd.MM.yyyy");
System.out.println(ddMMyyyy.format(formatter.parse(dateStr)));
输出为
01.02.2015 // Ist February 2015
我希望阻止此操作让用户在UI上知道无效日期?
有什么建议吗?
答案 0 :(得分:3)
您正在寻找SimpleDateFormat的选项setLenient()
。
将isLenient设置为false后,它将只接受格式正确的日期,并在其他情况下抛出ParseException。
String dateStr = "Mon Jan 32 00:00:00 IST 2015"; // 32 Jan 2015
DateFormat formatter = new SimpleDateFormat("E MMM dd HH:mm:ss Z yyyy");
formatter.setLenient(false);
DateFormat ddMMyyyy = new SimpleDateFormat("dd.MM.yyyy");
try {
System.out.println(ddMMyyyy.format(formatter.parse(dateStr)));
} catch (ParseException e) {
// Your date is invalid
}
答案 1 :(得分:2)
您可以使用DateFormat.setLenient(boolean)
(来自Javadoc)进行严格解析,输入必须与此对象的格式匹配。
DateFormat ddMMyyyy = new SimpleDateFormat("dd.MM.yyyy");
ddMMyyyy.setLenient(false);
答案 2 :(得分:1)
将日期格式化程序设置为不宽松...
DateFormat formatter = new SimpleDateFormat("E MMM dd HH:mm:ss Z yyyy");
formatter.setLenient(false);