我目前正在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"
这似乎是我使用的模式的问题,但尝试了不同的模式,没有任何作用。
答案 0 :(得分:6)
某些字段(例如星期几字段和/或AM / PM标记)可能与默认Locale
中的字段不匹配。 ParseException
使用方法getErrorOffset来确定模式的确切位置。
试
DateFormat format =
new SimpleDateFormat("EEE M/dd hh:mm a yyyy", Locale.ENGLISH);
答案 1 :(得分:1)
在解析语言星期名称时,添加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);
答案 2 :(得分:0)
我尝试了这个,以下工作,
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
答案 3 :(得分:0)
SimpleDateFormat formatter = new SimpleDateFormat("/* type your own format*/");
String formattedDate = formatter.format(todaysDate);
System.out.println("Formatted date is ==>"+formattedDate);
试试这段代码
答案 4 :(得分:0)
为了完整起见,现代答案。虽然其他答案在2013年是很好的答案,Date
,DateFormat
和SimpleDateFormat
现在已经过时了,我建议您将它们替换为现代版本:
DateTimeFormatter parser
= DateTimeFormatter.ofPattern("EEE M/dd hh:mm a yyyy", Locale.ENGLISH);
LocalDateTime ldt = LocalDateTime.parse(dateString, parser);
结果是预期的LocalDateTime
2013-07-14T03:44
。
格式模式字符串仍然相同,并且对英语语言环境的需求是相同的。