diff --git a/date_api/date_api_ical.inc b/date_api/date_api_ical.inc
index 2ca484e..b18db6a 100644
--- a/date_api/date_api_ical.inc
+++ b/date_api/date_api_ical.inc
@@ -762,10 +762,11 @@ function date_api_ical_build_rrule($form_values) {
   // object on a previous pass, so check for that.
   if (isset($form_values['EXDATE']) && is_array($form_values['EXDATE'])) {
     $ex_dates = array();
+
     foreach ($form_values['EXDATE'] as $value) {
       if (!empty($value['datetime'])) {
-        $date = !is_object($value['datetime']) ? date_ical_date($value, 'UTC') : $value['datetime'];
-        $ex_date = !empty($date) ? date_format($date, DATE_FORMAT_ICAL) . 'Z': '';
+        $date = !is_object($value['datetime']) ? date_ical_date($value, $value['tz']) : $value['datetime'];
+        $ex_date = !empty($date) ? date_format($date, DATE_FORMAT_ICAL) : '';
         if (!empty($ex_date)) {
           $ex_dates[] = $ex_date;
         }
@@ -784,19 +785,19 @@ function date_api_ical_build_rrule($form_values) {
   if (isset($form_values['RDATE']) && is_array($form_values['RDATE'])) {
     $ex_dates = array();
     foreach ($form_values['RDATE'] as $value) {
-      $date = !is_object($value['datetime']) ? date_ical_date($value, 'UTC') : $value['datetime'];
-      $ex_date = !empty($date) ? date_format($date, DATE_FORMAT_ICAL) . 'Z': '';
+      $date = !is_object($value['datetime']) ? date_ical_date($value, $value['tz']) : $value['datetime'];
+      $ex_date = !empty($date) ? date_format($date, DATE_FORMAT_ICAL) : '';
       if (!empty($ex_date)) {
         $ex_dates[] = $ex_date;
       }
     }
     if (!empty($ex_dates)) {
       sort($ex_dates);
-      $RRULE .= chr(13) . chr(10) . 'RDATE:' . implode(',', $ex_dates);
+      $RRULE .= chr(13) . chr(10) . 'RDATE;TZID=' . $value['tz'] . ':' . implode(',', $ex_dates);
     }
   }
   elseif (!empty($form_values['RDATE'])) {
-    $RRULE .= chr(13) . chr(10) . 'RDATE:' . $form_values['RDATE'];
+    $RRULE .= chr(13) . chr(10) . 'RDATE;TZID=' . $value['tz'] . ':' . $form_values['RDATE'];
   }
 
   return $RRULE;
diff --git a/date_repeat/date_repeat.module b/date_repeat/date_repeat.module
index d742dc8..c266ed8 100644
--- a/date_repeat/date_repeat.module
+++ b/date_repeat/date_repeat.module
@@ -319,7 +319,7 @@ function date_repeat_split_rrule($rrule) {
       unset($exceptions['DATA']);
     }
     elseif (strstr($part, 'RDATE')) {
-      $RDATE = str_replace('RDATE:', '', $part);
+      $RDATE = str_replace(array('RDATE:', 'RDATE;'), '', $part);
       $additions = (array) date_ical_parse_exceptions('RDATE:', $RDATE);
       unset($additions['DATA']);
     }
