我需要一个函数来检查来自 rss 提要(事件)的日期是否是今天。rss 给出了一个字符串(在 CDATA 之间),所以我需要解析它。这个日期的形式是:
2012 年 8 月 1 日,星期三 00:00:00 +0002
在时间和时区没用的地方,只计算日期。
我想:我以与输入字符串相同的格式格式化今天的日期(为测试设置错误的电话日期)并且它们的测试是相等的。但显然设备的语言设置很重要,因为我得到了:
Wed, 01 Aug 2012 00:00:00 +0002 = wo, 01 aug. 2012 14:36:55 +0200
(我会使用一个子字符串来摆脱时间)。所以这行不通。
现在我尝试了一种新方法,但似乎有点过于复杂:获取字符串 --> 转换为日期 --> 将日期格式化为 ddMMyyyy 形式的字符串 --> 将今天的日期格式化为 ddMMyyyy 形式的字符串 --> 测试它们是否是平等的。但是由于某种原因,这也不起作用,因为从字符串到日期的解析不起作用。但我认为我的格式完全一样......任何人都知道如何实现这一点,或者我应该改变什么?
我的代码:
public boolean isAgendaToday(String inputstring){
boolean isToday = false;
SimpleDateFormat format = new SimpleDateFormat("E, dd MMM yyyy HH:mm:ss Z");
Date deventDate = null;
String seventDate;
Date dtoday = new Date();
String stoday;
SimpleDateFormat dateOnly = new SimpleDateFormat("ddMMyyyy");
stoday = dateOnly.format(dtoday);
try {
deventDate = format.parse(inputstring);
seventDate = dateOnly.format(deventDate);
System.out.println(seventDate + " = " + stoday);
if(stoday.equals(seventDate)){
isToday = true;
}
} catch (ParseException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (java.text.ParseException e) {
// XXX Auto-generated catch block
e.printStackTrace();
}
return isToday;
}
这就是我每次尝试此操作后日志所说的内容(当然有不同的日期):
java.text.ParseException:无法解析的日期:2012 年 7 月 31 日星期二 00:00:00 +0002