Android中使用Xperia设备的奇怪日期格式行为

时间:2012-06-12 08:53:15

标签: android date simpledateformat

我正面临着Android中日期解析的真正问题。 我通过JSON收到dd / MM / yyyy HH:mm z格式的日期,我只需要获得“本地化”的小时和分钟,并将其显示在我的应用程序中。 使用我的代码,每台设备上的一切工作正常,但我的客户报告说,他们在使用Sony XPERIA设备时无法看到应用程序中的时间。 他们还告诉我,他们有一台XPeria设备,无法显示时间,然后他们根据它,一切开始工作FINE。所以我认为它与sony的操作系统的Date / simpledateformat / locale / timezone的一些奇怪的实现有关。 这是我的代码。

getDateLocalized("18/06/2012 18:00 CEST","HH:mm");

public static String getDateLocalized(String match_date, String pattern) {
    String d = "";
    String format = "dd/MM/yyyy HH:mm z";
    SimpleDateFormat sdf = getSimpleDateFormat();
    try {
        Date date = sdf.parse(match_date);
        sdf.setTimeZone(TimeZone.getDefault());
        sdf.applyLocalizedPattern(pattern);
        d = sdf.format(date);
        sdf.applyLocalizedPattern(format);
    } catch (ParseException e) {
        e.printStackTrace();
    }
    return d;
}

private static SimpleDateFormat getSimpleDateFormat() {
    String format = "dd/MM/yyyy HH:mm z";
    if (simpledateformat == null)
        simpledateformat = new SimpleDateFormat(format, Locale.UK);
    return simpledateformat;
}

我正在使用单例模式来检索SimpleDateFormat对象,因为它的创建非常昂贵,而且我同时显示了大量的时间。我正在使用Locale.UK,因为输入日期的LANGUAGE是英语。

最大的问题是我没有任何索尼xperia设备来测试它:(

感谢您的建议

1 个答案:

答案 0 :(得分:0)

问题基本上不是Xperia设备我认为默认格式化程序的问题。当我们得到Calender.getInstance()。getTime()显示正确的日期,当我们进行格式化时,所有的混乱都会发生。不知道为什么这样做补丁,并为我工作。

 if(formattedDate.contains("HH")){
                int hris = Calendar.getInstance().get(Calendar.HOUR_OF_DAY);
                formattedDate = formattedDate.replace("HH", ""+hris);

            }