2016-08-01 6 views
0

Wir verwenden die JavaMail-API zum Senden von Kalendereinträgen. Die Empfänger von Outlook haben jedoch Zeitzonenprobleme, da die Besprechungen falsche Zeitvorgaben aufweisen. Im Allgemeinen ist unser Ansatz wie folgt:Zeitzonenprobleme beim Senden von Kalendereinträgen mit der Java-Mail-API

Zuerst haben wir, SimpleDateFormat iCalendarDateFormat = neue SimpleDateFormat ("yyyyMMdd'T'HHmmss");

verwenden wir dann iCalendarDateFormat.setTimeZone (TimeZone.getTimeZone (receiverTimeZone));

Schließlich verwenden wir Calendar.getInstance() für Anfang und Ende, um Kalenderfelder zu bearbeiten, und daher haben wir Date startDate = startTime.getTime(); Datum endDate = endTime.getTime();

Wenn wir über sind Anfrage zu senden, wie pro iCalendar-Spezifikation haben wir
"DTSTAMP:" + iCalendarDateFormat.format (startdate) + "\ n" + "DTSTART:" + iCalendarDateFormat.format (startdate) + "\ n" "DTEND:" + iCalendarDateFormat.format (endDate) + "\ n"

Ist dies der richtige Ansatz ?. Bitte kommentieren.

Dank

+0

Ich rate nur, aber ... Es sieht nicht so aus, als gäbe es Zeitzoneninformationen in den Datum/Uhrzeiteinträgen im Kalendertermin, also vielleicht interpretiert es diese Zeiten als relativ zur Zeitzone des Absenders, aus ermittelt der Datumskopf in der Nachricht? –

Antwort

0

Fest ohne zu sagen, den tatsächlichen Inhalt Ihrer iCalendar-Datei, zusammen mit dem erwarteten Beginn und Ende Datetime mit Zeitzoneninformationen zu sehen, aber Sie scheinen die DTSTART in Floating-Zeit (Datumzeit mit Ortszeit) zu erzeugen, . Obwohl Ihr Codebeispiel darauf hindeutet, dass Sie Zugriff auf die Zeitzone des Empfängers (receiverTimezone) haben, ist dies ein sehr fragiler Ansatz.

Stattdessen sollten Sie entweder datetime mit UTC time oder datetime mit lokaler Zeit und Zeitzone verwenden (wobei die Zeitzone nicht die Empfängerzeitzone sein muss). Wenn das Ereignis nicht wiederholt wird, ist die einfachste Methode die Verwendung von datetime mit UTC time.

Siehe https://tools.ietf.org/html/rfc5545#section-3.3.5 für die Definition jedes Formats.

+0

Vielen Dank für Ihr Feedback. Es ist auch nicht beabsichtigt, die Zeitzone des Empfängers direkt zu verwenden, sondern es war eine der Varianten, die wir getestet haben, als die Dinge nicht funktionierten. Auf jeden Fall werden wir UTC überprüfen. – user1525825

Verwandte Themen