我正面临着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设备来测试它:(
感谢您的建议
答案 0 :(得分:0)
问题基本上不是Xperia设备我认为默认格式化程序的问题。当我们得到Calender.getInstance()。getTime()显示正确的日期,当我们进行格式化时,所有的混乱都会发生。不知道为什么这样做补丁,并为我工作。
if(formattedDate.contains("HH")){
int hris = Calendar.getInstance().get(Calendar.HOUR_OF_DAY);
formattedDate = formattedDate.replace("HH", ""+hris);
}