コード例 #1
0
 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");
       }
     }
   }
 }