--- cck_time_original.module	2011-02-25 13:08:33.000000000 +1100
+++ cck_time.module	2012-11-13 15:46:34.000000000 +1100
@@ -407,3 +407,67 @@ function cck_time_form_content_field_edi
     $form['field']['multiple']['#access'] = FALSE;
   }
 }
+
+/**
+ * Implementation of hook_feeds_node_processor_targets_alter().
+ *
+ * @see FeedsNodeProcessor::getMappingTargets().
+ */
+function cck_time_feeds_node_processor_targets_alter(&$targets, $content_type) {
+  $info = content_types($content_type);
+  $fields = array();
+  if (isset($info['fields']) && count($info['fields'])) {
+    foreach ($info['fields'] as $field_name => $field) {
+      if ($field['type'] == 'cck_time') {
+        $fields[$field_name] = isset($field['widget']['label']) ? $field['widget']['label'] : $field_name;
+      }
+    }
+  }
+  foreach ($fields as $k => $name) {
+    $targets[$k] = array(
+      'name' => check_plain($name),
+      'callback' => 'cck_time_feeds_set_target',
+      'description' => t('The @name field of the node.', array('@name' => $name)),
+    );
+  }
+}
+
+/**
+ * Callback for mapping. Here is where the actual mapping happens.
+ *
+ * When the callback is invoked, $target contains the name of the field the
+ * user has decided to map to and $value contains the value of the feed item
+ * element the user has picked as a source.
+ */
+function cck_time_feeds_set_target($node, $target, $value) {
+  if (!is_array($value)) {
+    $value = array($value);
+  }
+  
+  $field = isset($node->$target) ? $node->$target : array();
+  
+  $info = content_fields($target);
+  
+  // Handle multiple value fields.
+	$i = 0;
+	foreach ($value as $v) {
+		if (!is_array($v) && !is_object($v)) {
+			$time = strtotime($v);
+			if ($info['format'] == '12') {
+				$field[$i] = array(
+					'hour' => date('h', $time),
+					'meridiem' => date('A', $time)
+				);
+			}
+			else {
+				$field[$i] = array(
+					'hour' => date('H', $time)
+				);
+			}
+			$field[$i]['minute'] = date('i', $time);
+		}
+		$i++;
+	}
+
+  $node->$target = $field;
+}
