我正在尝试解析以 "01-26-2012 03:07 AM" 格式显示的日期。

我创建了这个 SimpleDateFormat :

private static final DateFormat DATE_FORMAT = new SimpleDateFormat("MM-dd-yyyy hh:mm a");

然而每次我解析以下内容时:
String date = "01-26-2012 03:07 AM";
Date myDate =  DATE_FORMAT.parse(date.trim());

我得到一个 ParseException :



我的 SimpleDateFormat 字符串是否正确?还有什么可能阻止它解析吗?

最佳答案

这很可能是语言环境问题。例如,如果您尝试使用英语语言环境,它应该可以工作:

DateFormat DATE_FORMAT = new SimpleDateFormat("MM-dd-yyyy hh:mm a", Locale.ENGLISH);

由于您没有指定区域设置,系统会使用默认的区域设置,并且“AM”可能无法正确解析。

下面的代码输出


public static void main(String[] args) throws Exception {
    String date = "01-26-2012 03:07 AM";
    DateFormat DATE_FORMAT = new SimpleDateFormat("MM-dd-yyyy hh:mm a", Locale.ENGLISH);
    Date myDate = DATE_FORMAT.parse(date.trim());
    System.out.println("myDate = " + myDate);
}

附带说明一下,例如,如果将代码更改为 Locale.CHINESE,则会出现解析异常。

关于java - SimpleDateFormat 的无法解释的 ParseException,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/13574113/

10-14 10:47