private void fixTimezone() { if (vTimezone != null && vTimezone.vObjects != null && vTimezone.vObjects.size() > 2) { VObject standard = null; VObject daylight = null; for (VObject vObject : vTimezone.vObjects) { if ("STANDARD".equals(vObject.type)) { if (standard == null || (vObject .getPropertyValue("DTSTART") .compareTo(standard.getPropertyValue("DTSTART")) > 0)) { standard = vObject; } } if ("DAYLIGHT".equals(vObject.type)) { if (daylight == null || (vObject .getPropertyValue("DTSTART") .compareTo(daylight.getPropertyValue("DTSTART")) > 0)) { daylight = vObject; } } } vTimezone.vObjects.clear(); vTimezone.vObjects.add(standard); vTimezone.vObjects.add(daylight); } // fix 3569922: quick workaround for broken Israeli Timezone issue if (vTimezone != null && vTimezone.vObjects != null) { for (VObject vObject : vTimezone.vObjects) { VProperty rrule = vObject.getProperty("RRULE"); if (rrule != null && rrule.getValues().size() == 3 && "BYDAY=-2SU".equals(rrule.getValues().get(1))) { rrule.getValues().set(1, "BYDAY=4SU"); } } } }