Index: date_api_ical.inc
===================================================================
--- date_api_ical.inc	(revision 2350)
+++ date_api_ical.inc	(working copy)
@@ -723,6 +723,7 @@
   // Exceptions dates go last, on their own line.
   if (isset($form_values['RDATE']) && is_array($form_values['RDATE'])) {
     $ex_dates = array();
+    $tz = date_default_timezone_name();
     foreach ($form_values['RDATE'] as $value) {
       $ex_date = date_convert($value['datetime'], DATE_DATETIME, DATE_ICAL);
       if (!empty($ex_date)) {
@@ -731,11 +732,13 @@
     }
     if (!empty($ex_dates)) {
       sort($ex_dates);
-      $RRULE .= chr(13) . chr(10) .'RDATE:'. implode(',', $ex_dates);
+      $RRULE .= chr(13) . chr(10) .'RDATE;TZID=' . $tz . ':'. implode(',', $ex_dates);
     }
   }
   elseif (!empty($form_values['RDATE'])) {
-    $RRULE .= chr(13) . chr(10) .'RDATE:'. $form_values['RDATE'];
+    $tz = date_default_timezone_name();
+    $ex_date = date_convert($form_values['RDATE'], DATE_DATETIME, DATE_ICAL, $tz);
+    $RRULE .= chr(13) . chr(10) .'RDATE;TZID=' . $tz . ':'. $ex_date;
   }
 
   return $RRULE;
Index: date_repeat/date_repeat_form.inc
===================================================================
--- date_repeat/date_repeat_form.inc	(revision 2350)
+++ date_repeat/date_repeat_form.inc	(working copy)
@@ -216,14 +216,14 @@
         '#type' => $element['#date_repeat_widget'],
         '#default_value' => $RDATE,
         '#date_timezone' => !empty($element['#date_timezone']) ? $element['#date_timezone'] : date_default_timezone_name(),
-        '#date_format' => !empty($element['#date_format']) ? date_limit_format($element['#date_format'], array('year', 'month', 'day')) : 'Y-m-d',
+        '#date_format' => !empty($element['#date_format']) ? date_limit_format($element['#date_format'], array('year', 'month', 'day', 'hour', 'minute')) : 'Y-m-d H:i',
         '#date_text_parts'  => !empty($element['#date_text_parts']) ? $element['#date_text_parts'] : array(),
         '#date_year_range'  => !empty($element['#date_year_range']) ? $element['#date_year_range'] : '-3:+3',
         '#date_label_position' => !empty($element['#date_label_position']) ? $element['#date_label_position'] : 'within',
         ),
       'tz' => array('#type' => 'hidden', '#value' => $element['#date_timezone']),
-      'all_day' => array('#type' => 'hidden', '#value' => 1),
-      'granularity' => array('#type' => 'hidden', '#value' => serialize(array('year', 'month', 'day'))),
+      'all_day' => array('#type' => 'hidden', '#value' => 0),      
+      'granularity' => array('#type' => 'hidden', '#value' => serialize(array('year', 'month', 'day', 'hour', 'minute'))),
       );
   }
 
@@ -343,7 +343,7 @@
     foreach ($form_values['RDATE'] as $delta => $value) {
       if (is_array($value['datetime'])) {
         $rdate_element['#value'] = $form_values['RDATE'][$delta]['datetime'];
-        $rdate_element['#date_format'] = date_limit_format($element['#date_format'], array('year', 'month', 'day'));
+        $rdate_element['#date_format'] = date_limit_format($element['#date_format'], array('year', 'month', 'day', 'hour', 'minute'));
         $form_values['RDATE'][$delta]['datetime'] = $function($rdate_element);
       }
     }
