diff --git a/commerce_event_ticket.module b/commerce_event_ticket.module
index 71e9ae6..f721082 100644
--- a/commerce_event_ticket.module
+++ b/commerce_event_ticket.module
@@ -628,33 +628,48 @@ function commerce_event_ticket_get_date($node) {
       continue;
     }
     // If there are multiple date values, use the last one. This should produce
-    // an array with at least the keys 'value' (start date) and 'value2' (end
-    // date).
+    // an array with at least the key 'value' (start date) and potentially the
+    // key 'value2' (end date).
     $date = end($node->{$field_name}[LANGUAGE_NONE]);
+
     // The Date module seems to sometimes provide DateObject objects and
     // sometimes strings, perhaps due to different versions. The DateObject
     // class extends the PHP core DateTime object.
-    if (is_string($date['value'])) {
+    if (isset($date['value']) && is_string($date['value'])) {
       $date['start'] = strtotime($date['value']);
-      $date['end'] = strtotime($date['value2']);
+      if (isset($date['value2'])) {
+        $date['end'] = strtotime($date['value2']);
+      }
     }
-    elseif ($date['value'] instanceof DateTime) {
+    elseif (isset($date['value']) && $date['value'] instanceof DateTime) {
       // DateTime::getTimestamp() was added in PHP version 5.3.0.
       if (method_exists($date['value'], 'getTimestamp')) {
         $date['start'] = $date['value']->getTimestamp();
-        $date['end'] = $date['value2']->getTimestamp();
       }
-      elseif (isset($date['value']->originalTime)) {
+      else {
         $date['start'] = strtotime($date['value']->originalTime);
-        $date['end'] = strtotime($date['value2']->originalTime);
+      }
+      if (isset($date['value2']) && $date['value2'] instanceof DateTime) {
+        if (method_exists($date['value2'], 'getTimestamp')) {
+          $date['end'] = $date['value2']->getTimestamp();
+        }
+        else {
+          $date['end'] = $date['value2']->originalTime;
+        }
       }
     }
     else {
-      watchdog('commerce_event_ticket', 'Failed to work out the start and end dates for node @nid.', array(
+      watchdog('commerce_event_ticket', 'Failed to get the event date for node @nid.', array(
         '@nid' => $node->nid,
       ), WATCHDOG_ERROR);
       return FALSE;
     }
+
+    // If there is no end date, set it to the start date.
+    if (!isset($date['end'])) {
+      $date['end'] = $date['start'];
+    }
+
     return $date;
   }
   return FALSE;
