1

私は ICS ファイルを作成している Java プロジェクトに取り組んでおり、日付と時刻に問題があります。ICS ファイルをインポートするたびに、イベントの startTime とイベントの endTime を ICS ファイルに表示したいと考えています。

endTime も含むコンストラクターを使用してみましたが、運が悪く、まだ 00:00 が表示されます。以下のコードはICSファイルを生成するために使用しており、その下はICSファイルの内容です。

コード :

 Calendar icsCalendar = new Calendar();
            icsCalendar.getProperties().add(Version.VERSION_2_0);
            icsCalendar.getProperties().add(CalScale.GREGORIAN);

            String startDateString = new SimpleDateFormat("yyyyMMdd'T'hhmmss'Z'").format(groupNotes.getStartTimestamp());
            String endDateString = new SimpleDateFormat("yyyyMMdd'T'hhmmss'Z'").format(groupNotes.getEndTimestamp());
            net.fortuna.ical4j.model.Date startDt = null;
            net.fortuna.ical4j.model.Date endDateFortuna = null;
            try {
                startDt = new net.fortuna.ical4j.model.Date(startDateString, "yyyyMMdd'T'hhmmss'Z'");
                endDateFortuna = new net.fortuna.ical4j.model.Date(endDateString, "yyyyMMdd'T'hhmmss'Z'");
            } catch (ParseException e) {
                e.printStackTrace();
            }

            java.util.Calendar endDate = java.util.Calendar.getInstance();
            endDate.setTimeInMillis(groupNotes.getEndTimestamp().getTime());
           /* long difference = groupNotes.getEndTimestamp().getTime() - groupNotes.getStartTimestamp().getTime();
            int min = (int) (difference / (1000 * 60));
            Dur dur = new Dur(0, 0, min, 0);*/
            VEvent vEvent = new VEvent(startDt, endDateFortuna, groupNotes.getMnotetag());
            vEvent.getProperties().add(new Description());
            try {
                vEvent.getProperties().getProperty(Property.DESCRIPTION).setValue(groupNotes.getMnotetext());
                vEvent.getProperties().add(new Organizer("MAILTO:" + groupNotes.getNoteCreatorEmail()));

            } catch (IOException | URISyntaxException | ParseException e) {
                e.printStackTrace();
            }
            icsCalendar.getComponents().add(vEvent);

            FileOutputStream fout = null;

            try {
                fout = new FileOutputStream(calFile);
            } catch (FileNotFoundException e) {
                e.printStackTrace();
            }

            CalendarOutputter outputter = new CalendarOutputter();
            outputter.setValidating(false);

            try {
                outputter.output(icsCalendar, fout);
                return new FileInputStream("mycalendar.ics");
            } catch (IOException | ValidationException e) {
                e.printStackTrace();
            }
        }

私のICSファイルは次のようになります。

BEGIN:VCALENDAR
VERSION:2.0
CALSCALE:GREGORIAN
BEGIN:VEVENT
DTSTAMP:20150910T152828Z
DTSTART;VALUE=DATE:20150911
DTEND;VALUE=DATE:20150911
SUMMARY:
DESCRIPTION:poip
ORGANIZER:MAILTO:email@gmail.com
END:VEVENT
END:VCALENDAR

これをインポートすると、Outlook、thunderbird、または Evolution に時間が記載されていません。私は何を間違っていますか?ありがとうございました。

4

1 に答える 1

1

のおよびプロパティに対してのみを指定し、を指定しDATEていません。DATE-TIMEDTSTARTDTENDVEVENT

注: これらは Date-Time Start と Date-Time End の略です)。

詳細については、RFC5545、特にDATE-TIME、またはDTSTART、およびVEVENTを参照できます。

2 番目のものも、デフォルトではformat ではなくformatDTSTARTを使用することを思い出させてくれます。DATE-TIMEDATE

3 番目のものは、値DTSTARTのみの使用法を示しますDATE

「VEVENT」は、カレンダー内で記念日または毎日のリマインダーを指定するために使用されるカレンダー コンポーネントでもあります。これらのイベントには、DATE-TIME のデフォルト値タイプではなく、「DTSTART」プロパティの DATE 値タイプがあります。

于 2015-09-11T06:25:24.360 に答える