相关疑难解决方法(0)

当str = 2011/12/12aaaaaaaaa时,SimpleDateFormat parse(string str)不会抛出异常?

这是一个例子:

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"视为无效的日期字符串并抛出异常?

java simpledateformat parseexception

10
推荐指数
2
解决办法
1万
查看次数

SimpleDateFormat提供错误的日期而不是错误

我正在使用以下模式和日期

日期:2007年13月13日

模式:dd-MM-yyyy

输出:Sun Jan 13 00:00:00 IST 2008或2008-01-13 00:00:00.0

我在这里期待例外.如果给定日期不正确,我该怎么做才能生成异常.

java simpledateformat

7
推荐指数
1
解决办法
3007
查看次数

如何防止SimpleDateFormat解析错误的格式化日期?

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)

java date simpledateformat

1
推荐指数
1
解决办法
1152
查看次数

标签 统计

java ×3

simpledateformat ×3

date ×1

parseexception ×1