1

使用以下代码解析 2013 年 7 月 10 日星期四的日期有什么问题

Date parse = new SimpleDateFormat("EEE d M yyyy").parse("Thu 10 July 2013");

它正在为

new SimpleDateFormat("EEE M yyyy").parse("Thu July 2013");

但是如果我把天(d)放在字符串中,那么它会抛出以下异常

new SimpleDateFormat("EEE d M yyyy").parse("Thu 10 July 2013");

java.text.ParseException: Unparseable date: "Thu 10 July 2013"

提前致谢

4

4 回答 4

3

尝试将您的格式扩展为类似EEE d MMMM yyyy

single 或 doubleM将作为数字月份值中断 (ie {0}7),MMM将作为短月份名称 (ie Jul)MMMM中断,并将作为完整月份名称 (ie July)中断

还应该注意的是,在我的测试中MMMMMMM似乎工作

于 2013-10-10T05:09:37.950 回答
1

使用dd代替d和 MMM 代替 MM:

new SimpleDateFormat("EEE dd MMM yyyy").parse("Thu 10 July 2013");
于 2013-10-10T05:09:25.590 回答
0

我试过了

new SimpleDateFormat("EEE d M yyyy").parse("Thu 10 July 2013");

不起作用,因此我将月份格式更改为MMMM

Date parse = new SimpleDateFormat("EEE MMMM yyyy").parse("Thu July 2013");
Date p1 = new SimpleDateFormat("EEE d MMMM yyyy").parse("Thu 10 July 2013");
System.out.println(p1);

这是有效的。

于 2013-10-10T05:17:27.877 回答
0

我试试这个,但它会导致运行时异常

java.util.Date  dt = new SimpleDateFormat("EEE M yyyy").parse("Thu July 2013");

根据 Java 文档Oracle Java Doc

如果你想解析带有月份名称的日期字符串,比如JulyJul,你应该分别使用MMMMMMM

如果要解析包含月数的日期,可以使用MMM .eg ("28 8 2012")

对于您的情况,您应该使用MMM 或 MMMM而不是 M.like this

new SimpleDateFormat("EEE d MMM yyyy").parse("Thu 10 July 2013");

或者

new SimpleDateFormat("EEE d MMMM yyyy").parse("Thu 10 July 2013") ;
于 2013-10-10T06:36:41.983 回答