Android Unparsable日期:2017年1月6日

时间:2017-01-25 19:57:08

标签: android locale simpledateformat

我正在使用的功能是

public static String getFormatedDate(String dateVal) {
    String tempDate = null;
    Locale systemLocale = Locale.getDefault();

    try {
        SimpleDateFormat formatter = new SimpleDateFormat("MMM dd, yyyy",
                systemLocale);
        Date date = (Date) formatter.parse(dateVal);
        SimpleDateFormat sdf = new SimpleDateFormat("MM/dd/yyyy");
        tempDate = sdf.format(date);

    } catch (Exception e) {
        ApplicationLog.log(TAG, e);
    }

    return tempDate;
}

在许多设备中,此功能正常工作,但在其中一个设备中,在解析日期时会引发异常。此异常是否与Locale.getDefault()有关?如果是,我应该做些什么改变?谢谢。

调用函数

Utilities.getFormatedDate(date);

例外是......

Utilities:java.text.ParseException: Unparseable date: "Jan 06, 2017" (at offset 0)
at java.text.DateFormat.parse(DateFormat.java:579) 

1 个答案:

答案 0 :(得分:0)

您尝试从依赖于语言环境的格式"MMM dd, yyyy"解析日期并设置系统区域设置。尝试传递符合您格式的语言环境。例如Locale.US。改变你的方法,

public static String getFormatedDate(String dateVal) {
    String tempDate = null;

    try {
        SimpleDateFormat formatter = new SimpleDateFormat("MMM dd, yyyy",
                Locale.US);
        Date date = (Date) formatter.parse(dateVal);
        SimpleDateFormat sdf = new SimpleDateFormat("MM/dd/yyyy");
        tempDate = sdf.format(date);

    } catch (Exception e) {
        ApplicationLog.log(TAG, e);
    }

    return tempDate;
}