diff --git a/date_views/includes/date_views_fields.inc b/date_views/includes/date_views_fields.inc
index a002b08..fc33813 100644
--- a/date_views/includes/date_views_fields.inc
+++ b/date_views/includes/date_views_fields.inc
@@ -70,8 +70,16 @@ function _date_views_fields($base = 'node') {
     $custom = array();
     if (isset($handler->definition['field_name'])) {
       $field = field_info_field($handler->definition['field_name']);
+      $field_type='';
+      if(isset($field['type'])){
+        $field_type=$field['type'];
+      }
+      // If the field is custom, verify the field's type declaration within the handler.
+      elseif(isset($handler->definition['type'])){
+        $field_type=$handler->definition['type'];
+      }
       $is_field = TRUE;
-      switch ($field['type']) {
+      switch ($field_type) {
        case 'date':
           $sql_type = DATE_ISO;
           break;
@@ -94,9 +102,19 @@ function _date_views_fields($base = 'node') {
         $table_name . '.' . $db_info['columns'][$table_name]['value'],
         $table_name . '.' . (!empty($field['settings']['todate']) ? $db_info['columns'][$table_name]['value2'] : $db_info['columns'][$table_name]['value']),
       );
-
-      if (isset($field['settings']['tz_handling'])) {
-        $tz_handling = $field['settings']['tz_handling'];
+      
+      $tz_test=false;
+      if(isset($field['settings']['tz_handling'])){
+        $tz_handling=$field['settings']['tz_handling'];
+        $tz_test=true;
+      }
+      // If the field is custom, verify the field's timezone handling declaration within the handler.
+      elseif(isset($handler->definition['tz_handling'])){
+        $tz_handling=$handler->definition['tz_handling'];
+        $tz_test=true;
+      }
+      
+      if ($tz_test) {
         $db_info = date_api_database_info($field, $revision);
         if ($tz_handling == 'date') {
           $offset_field = $table_name . '.' . $db_info['columns'][$table_name]['offset'];
