不可解除的日期例外
我目前正在使用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年是很好的答案,但Date
, DateFormat
和SimpleDateFormat
现在已经过时了,我建议你用现代版本替换它们:
DateTimeFormatter parser = DateTimeFormatter.ofPattern("EEE M/dd hh:mm a yyyy", Locale.ENGLISH); LocalDateTime ldt = LocalDateTime.parse(dateString, parser);
结果是2013-07-14T03:44
的LocalDateTime
如预期的那样。
格式模式字符串仍然相同,并且对英语语言环境的需求是相同的。