3

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

4

1 に答える 1

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」に設定できます

于 2012-07-31T13:18:07.697 に答える