不可解除的日期例外

我目前正在使用Java编写一些简单的项目,并且我在以下字符串中有日期:

 String dateString = "Sun 7/14 03:44 AM 2013"; 

并希望将此字符串转换为Date对象。 我正在使用以下代码行来做到这一点。 我搜索网站并找到解决方案如何使用DateFormatter执行此操作:

 DateFormat format = new SimpleDateFormat("EEE M/dd hh:mm a yyyy"); Date d = format.parse(dateString); 

但我可能做错了什么,因为我总是得到例外:

 Unparseable date: "Sun 7/14 03:44 AM 2013" 

这似乎是我正在使用的模式的问题,但尝试了不同的模式,没有任何工作。

某些字段(如星期字段和/或AM / PM标记)可能与默认Locale字段不匹配。 ParseException具有方法getErrorOffset以确定模式不匹配的确切位置。

尝试

 DateFormat format = new SimpleDateFormat("EEE M/dd hh:mm a yyyy", Locale.ENGLISH); 

在解析语言星期名称时添加Locale非常重要。

 String dateString = "Sun 7/14 03:44 AM 2013"; DateFormat format = new SimpleDateFormat("EEE M/dd hh:mm a yyyy", Locale.US); Date d = format.parse(dateString); 

我尝试了这个,以下工作,

  String stringDate = "Sun 7/14 03:44 AM 2013"; DateFormat format = new SimpleDateFormat("EEE MM/dd hh:mm a yyyy"); System.out.println("Parsed Date = "+format.parse(stringDate)); 

输出如下

 Parsed Date = Sun Jul 14 03:44:00 BST 2013 
 SimpleDateFormat formatter = new SimpleDateFormat("/* type your own format*/"); String formattedDate = formatter.format(todaysDate); System.out.println("Formatted date is ==>"+formattedDate); 

试试这段代码

为了完整起见,现代的答案。 虽然其他答案在2013年是很好的答案,但DateDateFormatSimpleDateFormat现在已经过时了,我建议你用现代版本替换它们:

  DateTimeFormatter parser = DateTimeFormatter.ofPattern("EEE M/dd hh:mm a yyyy", Locale.ENGLISH); LocalDateTime ldt = LocalDateTime.parse(dateString, parser); 

结果是2013-07-14T03:44LocalDateTime如预期的那样。

格式模式字符串仍然相同,并且对英语语言环境的需求是相同的。