不可解除的日期例外

时间:2013-07-14 09:42:58

标签: java date exception

我目前正在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"

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

5 个答案:

答案 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年是很好的答案,DateDateFormatSimpleDateFormat现在已经过时了,我建议您将它们替换为现代版本:

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

结果是预期的LocalDateTime 2013-07-14T03:44

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