这是一个例子:
public MyDate() throws ParseException {
SimpleDateFormat sdf = new SimpleDateFormat("yyyy/MM/d");
sdf.setLenient(false);
String t1 = "2011/12/12aaa";
System.out.println(sdf.parse(t1));
}
Run Code Online (Sandbox Code Playgroud)
2011/12/12aaa不是有效的日期字符串.但是,该功能打印"2011年12月12日00:00:00 PST",并且不会抛出ParseException.
谁能告诉我如何让SimpleDateFormat将"2011/12/12aaa"视为无效的日期字符串并抛出异常?
我正在使用以下模式和日期
日期:2007年13月13日
模式:dd-MM-yyyy
输出:Sun Jan 13 00:00:00 IST 2008或2008-01-13 00:00:00.0
我在这里期待例外.如果给定日期不正确,我该怎么做才能生成异常.
我SimpleDateFormat用来解析字符串到Date对象,我想知道为什么结果不是我所期望的.
例如:
DateFormat yyyyMMdd = new SimpleDateFormat("yyyyMMdd");
Date date = yyyyMMdd.parse("20100725");
System.out.println(date);
Run Code Online (Sandbox Code Playgroud)
按预期工作和输出
Sun Jul 25 00:00:00 CEST 2010
Run Code Online (Sandbox Code Playgroud)
但
Date date = yyyyMMdd.parse("2010-07-25");
System.out.println(date);
Run Code Online (Sandbox Code Playgroud)
工作和输出
Mon Dec 07 00:00:00 CET 2009
Run Code Online (Sandbox Code Playgroud)
我期待一个ParseException,但似乎SimpleDateFormat将月份部分-07和日期部分解释-25为负数.首先,我无法弄清楚它是如何到达12月7日的.所以我尝试了另一个值:
Date date = yyyyMMdd.parse("2010-7-25");
System.out.println(date);
Run Code Online (Sandbox Code Playgroud)
而且它的结果
Sun Apr 05 00:00:00 CEST 2009
Run Code Online (Sandbox Code Playgroud)
因此,它似乎以某种方式减去了可能是5月1 7日的2010那一个月,以及25几天,所以结果是2009年4月5日.
您yyyyMMdd在服务实现中使用该模式的图像和某个客户端意外地将日期发送为yyyy-MM-dd.你不会得到例外.相反,你会得到完全不同的日期.我想这不是你所期望的.
例如
String clientData = "2010-05-23";
DateFormat yyyyMMdd = new SimpleDateFormat("yyyyMMdd"); …Run Code Online (Sandbox Code Playgroud)