浏览 7358 次
精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
|
|
---|---|
作者 | 正文 |
发表时间:2011-11-30
在form中输入“33/12/2011”,业务逻辑层处理,用SimpleDateFormat parse()方法,转化为Date(2012,01,02).这样处理相当“33/12/2011”是正常输入。现在需求变了,“33/12/2011”需要报错。我在api里面找了半天,没找了任何一个方法,会把"33/12/2011"当作错误格式的。难道要我重写SimpleDateFormat的parse方法吗?
怎么办怎么办。
旁边的技术牛人,略想5分钟,答案就出来了。 声明:ITeye文章版权属于作者,受法律保护。没有作者书面许可不得转载。
推荐链接
|
|
返回顶楼 | |
发表时间:2011-11-30
Calendar
|
|
返回顶楼 | |
发表时间:2012-01-13
使用format方法再转换成字符串,和传入的那个作比较,如果不相等,则证明传入的那个日期格式是错误的。
|
|
返回顶楼 | |
发表时间:2012-01-13
用正则表达式匹配一下
|
|
返回顶楼 | |
发表时间:2012-01-13
setLenient(false);
|
|
返回顶楼 | |
发表时间:2012-01-14
leon_a 写道 setLenient(false);
正解,附上测试代码: import java.text.DateFormat; import java.text.ParseException; import java.text.SimpleDateFormat; import java.util.Date; public class DateTest { public static void main(String[] args) throws ParseException { DateFormat format = new SimpleDateFormat("dd/MM/yyyy"); format.setLenient(false); Date date = format.parse("33/12/2011"); System.out.println(date); } } 输出结果: Exception in thread "main" java.text.ParseException: Unparseable date: "33/12/2011" at java.text.DateFormat.parse(Unknown Source) at DateTest.main(DateTest.java:11) 将代码调整为: format.setLenient(true); 输出结果: Mon Jan 02 00:00:00 CST 2012 setLenient用于设置Calendar是否宽松解析字符串,如果为false,则严格解析;默认为true,宽松解析。 |
|
返回顶楼 | |