(イベントの) 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