论坛首页 Java企业应用论坛

SimpleDateFormat的parse方法

浏览 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分钟,答案就出来了。

   发表时间:2011-11-30  
Calendar
0 请登录后投票
   发表时间:2012-01-13  
使用format方法再转换成字符串,和传入的那个作比较,如果不相等,则证明传入的那个日期格式是错误的。
0 请登录后投票
   发表时间:2012-01-13  
用正则表达式匹配一下
0 请登录后投票
   发表时间:2012-01-13  
setLenient(false);
0 请登录后投票
   发表时间: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,宽松解析。
0 请登录后投票
论坛首页 Java企业应用版

跳转论坛:
Global site tag (gtag.js) - Google Analytics