SimpleDateFormat不适用于某些Android版本

时间:2013-03-15 13:22:07

标签: java android simpledateformat

我必须按以下格式阅读日期周六,2013年1月19日00:00:00 +0100
我的格式化程序是

SimpleDateFormat format = new SimpleDateFormat("EEE, dd MMM yyyy HH:mm:ss Z");

当我想设置数据时:

try {
    myObject.setEndDate(format.parse(currentValue));
} catch (ParseException e) {
    // TODO Auto-generated catch block
    e.printStackTrace();
}

如果我在简单的java项目中使用它,或者在我的 Nexus Htc 上使用它,那么这是完美的,但当我将调试器连接到 Samsung s3 时它给出了解析器异常。

我希望这适用于所有版本的Android和手机。

3 个答案:

答案 0 :(得分:0)

SimpleDateFormat format = new SimpleDateFormat("EEE, dd MMM yyyy HH:mm:ss.SSSZ");

试试这个:

答案 1 :(得分:0)

在抓取中打印currentValueLocale.getDefaultLocale()。很可能语言环境阻止解析currentValue。

至少那时您可以在具有完全相同参数的PC上尝试代码。

答案 2 :(得分:0)

我通过在try catch中计算日期而没有简单的日期格式来解决这个问题 当在某些手机上运行时,它没有捕获并且格式运行良好并且在其他手机上运行它可以捕获但是日期计算得很好。

   if(localName.equals("startDate") && currentValue!=null){

    try {
        myObject.setStartDate(format.parse(currentValue));
    } catch (ParseException e) {
        String  dates [] = currentValue.split(" ");
        Calendar cal = Calendar.getInstance();
        cal.set(Calendar.DAY_OF_MONTH, Integer.parseInt(dates[1]));
        cal.set(Calendar.YEAR, Integer.parseInt(dates[3]));
        cal.set(Calendar.MONTH, StaticDataUtils.months.get(dates[2]));
        String hours [] = dates[4].split(":");
        cal.set(Calendar.HOUR_OF_DAY, Integer.parseInt(hours[0]));
        cal.set(Calendar.MINUTE, Integer.parseInt(hours[1]));
        myObject.setStartDate(cal.getTime());
        e.printStackTrace();
    }