我需要一个函数来检查来自(事件的)RSS源的日期是否为今天。 rss给出了一个String(在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形式的字符串 - > 测试它们是否相等。 但由于某种原因,这也不起作用,因为从字符串到Date的解析不起作用。但我认为我的格式完全一样...... 任何人都知道如何实现这一点,或者我应该改变什么?
我的代码:
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:Unparseable date:Tue,31 Jul 2012 00:00:00 +0002
答案 0 :(得分:2)
Date date = null;
SimpleDateFormat format = new SimpleDateFormat("EEE, dd MMM yyyy HH:mm:ss Z",Locale.ENGLISH);
try
{
date = format.parse("Wed, 01 Aug 2012 00:00:00 +0002");
}
catch (ParseException e)
{
// TODO Auto-generated catch block
e.printStackTrace();
}
Date current = new Date();
if (date != null)
Toast.makeText(MainActivity.this, "" + current.compareTo(date), Toast.LENGTH_LONG).show();
else
Toast.makeText(MainActivity.this, "null", Toast.LENGTH_LONG).show();
我认为这段代码会让你想要的东西 - 创建RSS的日期取决于提供的字段和新的Date()创建日期取决于你当前的日期时间和时间戳必须相同。
但是如果你想要没有时间的只检查日期,你可以将小时,分钟和秒设置为'0'