0

我在 Android 中遇到了日期解析的真正问题。我通过 JSON 接收 dd/MM/yyyy HH:mm z 格式的日期,我只需要获取“本地化”小时和分钟并将其显示在我的应用程序中。使用我的代码在每台设备上一切正常,但我的客户报告我说,他们在使用 Sony XPERIA 设备时看不到应用程序中的时间。他们还告诉我,他们有一个无法显示时间的 XPeria 设备,然后他们将其植根,一切都开始正常工作。所以我认为这与索尼操作系统的日期/简单格式/语言环境/时区的一些奇怪实现有关。这是我的代码。

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,因为输入日期的语言是英语。

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

谢谢指教

4

1 回答 1

0

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

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

            }
于 2014-06-03T13:14:43.140 回答