【问题标题】:Why can't this SimpleDateFormat parse this date string?为什么这个 SimpleDateFormat 不能解析这个日期字符串?
【发布时间】:2010-04-08 21:37:46
【问题描述】:

SimpleDateFormat:

SimpleDateFormat pdf = new SimpleDateFormat("MM dd yyyy hh:mm:ss:SSSaa");

pdf.parse("Mar 30 2010 5:27:40:140PM");抛出的异常:

java.text.ParseException: Unparseable date: "Mar 30 2010 5:27:40:140PM"

有什么想法吗?


编辑:感谢您的快速解答。你们都说对了,我只是错过了 SimpleDateFormat 文档中的一个关键句子——我可能应该收工了。

【问题讨论】:

    标签: java parsing date simpledateformat


    【解决方案1】:

    首先,三个字符的月份将由MMM 表示。其次,一位两位数的小时数将由h 表示。第三,Mar 似乎是英语,你需要提供一个Locale.ENGLISH,否则它在具有不同默认语言环境的机器上将无法正常工作。

    以下作品:

    SimpleDateFormat sdf = new SimpleDateFormat("MMM dd yyyy h:mm:ss:SSSa", Locale.ENGLISH);
    System.out.println(sdf.parse("Mar 30 2010 5:27:40:140PM"));
    

    结果(我在 GMT-4 没有 DST):

    2010 年 3 月 30 日星期二 17:27:40 BOT

    另见java.text.SimpleDateFormat javadoc

    你为什么叫它pdf 我想不通,所以我把它改名为sdf ;)

    【讨论】:

    • 我就知道会出现!它被称为pdf,因为它是我用于解析的 DateFormat (String => Date);我有另一种用于格式化的日期格式(解析日期 => 字符串)。如果我在范围内只有 1 个 DateFormat,是的,我会称它为 sdf
    【解决方案2】:

    来自SimpleDateFormat javadocs

    月份:如果图案的数量 字母为 3 或更多,月份为 解释为文本;否则,它是 解释为数字。

    尝试使用类似“MMM dd yyyy”的模式

    【讨论】:

      【解决方案3】:

      MM 代表数字月份。使用 MMM。

      【讨论】:

        【解决方案4】:

        java.time

        我正在提供现代答案。其他答案是正确的,但是您使用的 SimpleDateFormat 类是出了名的麻烦且早已过时。相反,我使用的是 java.time,它是现代的高级 Java 日期和时间 API。

            DateTimeFormatter formatter = DateTimeFormatter.ofPattern(
                    "MMM d uuuu h:mm:ss:SSSa", Locale.ROOT);
            String dateTimeString = "Mar 30 2010 5:27:40:140PM";
            LocalDateTime dateTime = LocalDateTime.parse(dateTimeString, formatter);
            System.out.println(dateTime);
        

        输出:

        2010-03-30T17:27:40.140

        链接: Oracle tutorial: Date Time 解释如何使用 java.time。

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2012-06-20
          • 1970-01-01
          • 1970-01-01
          • 2017-02-04
          • 2015-03-20
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多