1
0
mirror of https://github.com/moparisthebest/davmail synced 2024-12-13 11:12:22 -05:00

Caldav: yet another timezone fix, adjust Outlook created event time before allday conversion

git-svn-id: http://svn.code.sf.net/p/davmail/code/trunk@1420 3d1905a2-6b24-0410-a738-b14d5a86fcbd
This commit is contained in:
mguessan 2010-09-04 07:35:33 +00:00
parent 9aaa99213b
commit 4fbd58387a

View File

@ -23,6 +23,9 @@ import davmail.util.StringUtil;
import org.apache.log4j.Logger; import org.apache.log4j.Logger;
import java.io.*; import java.io.*;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Date; import java.util.Date;
import java.util.HashSet; import java.util.HashSet;
import java.util.List; import java.util.List;
@ -118,7 +121,7 @@ public class VCalendar extends VObject {
} }
protected void fixVCalendar(boolean fromServer) { protected void fixVCalendar(boolean fromServer) {
// iCal 4 global private flag // set iCal 4 global X-CALENDARSERVER-ACCESS from CLASS
if (fromServer) { if (fromServer) {
setPropertyValue("X-CALENDARSERVER-ACCESS", getCalendarServerAccess()); setPropertyValue("X-CALENDARSERVER-ACCESS", getCalendarServerAccess());
} }
@ -239,11 +242,18 @@ public class VCalendar extends VObject {
// remove TZID // remove TZID
property.removeParam("TZID"); property.removeParam("TZID");
String value = property.getValue(); String value = property.getValue();
int tIndex = value.indexOf('T'); if (value.length() != 8) {
if (tIndex >= 0) { // try to convert datetime value to date value
value = value.substring(0, tIndex); try {
} else { Calendar calendar = Calendar.getInstance();
LOGGER.warn("Invalid date value in allday event: " + value); SimpleDateFormat dateParser = new SimpleDateFormat("yyyyMMdd'T'HHmmss");
calendar.setTime(dateParser.parse(value));
calendar.add(Calendar.HOUR_OF_DAY, 12);
SimpleDateFormat dateFormatter = new SimpleDateFormat("yyyyMMdd");
value = dateFormatter.format(calendar.getTime());
} catch (ParseException e) {
LOGGER.warn("Invalid date value in allday event: " + value);
}
} }
property.setValue(value); property.setValue(value);
} }