我在 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 设备来测试它:(
谢谢指教