我必须按以下格式阅读日期周六,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和手机。
答案 0 :(得分:0)
SimpleDateFormat format = new SimpleDateFormat("EEE, dd MMM yyyy HH:mm:ss.SSSZ");
试试这个:
答案 1 :(得分:0)
在抓取中打印currentValue
和Locale.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();
}