2

我目前正在从事一些简单的项目,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"

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

4

5 回答 5

6

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

尝试

DateFormat format = 
                new SimpleDateFormat("EEE M/dd hh:mm a yyyy", Locale.ENGLISH);
于 2013-07-14T09:49:26.233 回答
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);
于 2013-07-14T09:53:07.747 回答
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
于 2013-07-14T09:55:18.627 回答
0
SimpleDateFormat formatter = new SimpleDateFormat("/* type your own format*/");



  String formattedDate = formatter.format(todaysDate);

  System.out.println("Formatted date is ==>"+formattedDate);

试试这个代码

于 2013-07-14T10:10:35.417 回答
0

为了完整起见,现代答案。虽然其他答案在 2013 年是很好的答案,但Date现在早已过时,我建议您将它们替换为现代答案:DateFormatSimpleDateFormat

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

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

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

于 2017-06-22T18:28:09.470 回答