【问题标题】:Parsing on a date not working解析日期不起作用
【发布时间】:2016-04-30 20:15:22
【问题描述】:

当我尝试将字符串转换为 java.util.Date 时遇到问题。

我的日期格式如下:Jan 23 2016 4:00:24 PM,我想将该字符串转换为 Date 对象。所以要做到这一点,我使用 SimpleDateFormat 和根据 javadoc 对我来说似乎不错的参数:MMM dd yyyy aa.

但是当我运行我的代码时,我遇到了 java.text.ParseException: Unparseable date: "Jan 23 2016 4:00:24 PM"

我的问题可能是什么?

谢谢!

编辑:有问题的代码

String dateStr = "Jan 23 2016 4:00:24 PM";
SimpleDateFormat parserSDF = new SimpleDateFormat("MMM dd yyyy hh:mm:ss aa");
Date date = parserSDF.parse(dateStr);

【问题讨论】:

  • MMM 模式取决于区域设置。您可以尝试明确指定语言环境:SimpleDateFormat parserSDF = new SimpleDateFormat("MMM dd yyyy hh:mm:ss aa", Locale.US);
  • 是的,添加语言环境。美国成功了,感谢您的帮助!

标签: java date parsing datetime


【解决方案1】:

您的默认系统区域设置是什么?您可以使用Locale.getDefault() 方法调用来检查它。我已经尝试了您的代码,默认 en_US 语言环境对我来说效果很好。但是我尝试使用另一个(我使用中文)并发现了同样的错误。

尝试在明确定义的语言环境中使用SimpleDateFormat parserSDF = new SimpleDateFormat("MMM dd yyyy hh:mm:ss aa", Locale.US);

【讨论】:

    【解决方案2】:

    这段代码对我来说运行良好,并产生输出 Sat Jan 23 16:00:24 EST 2016

        String text = "Jan 23 2016 4:00:24 PM";
        SimpleDateFormat sdf = new SimpleDateFormat("MMM dd yyyy hh:mm:ss aa", Locale.US);
        try {
            System.out.println(sdf.parse(text));
        } catch (Exception e) {
            e.printStackTrace();
        }
    

    【讨论】:

    • 这很奇怪,您的代码仍然在我的计算机上引发异常......可能是因为我正在使用的 JDK 吗? (1.8u60)
    • 这很奇怪。我可以使用 Java 8 很好地运行该程序。尝试使用此站点:tutorialspoint.com/compile_java8_online.php
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-03-16
    • 1970-01-01
    • 1970-01-01
    • 2015-11-05
    • 2023-04-07
    相关资源
    最近更新 更多