diff --git a/date.field.inc b/date.field.inc
index 46ea317..a1575a4 100644
--- a/date.field.inc
+++ b/date.field.inc
@@ -320,7 +320,6 @@ function date_field_widget_info() {
  * Implements hook_field_load().
  */
 function date_field_load($entity_type, $entities, $field, $instances, $langcode, &$items, $age) {
-  $timezone_db = date_get_timezone_db($field['settings']['tz_handling']);
   $db_format = date_type_format($field['type']);
   $process = date_process_values($field);
   foreach ($entities as $id => $entity) {
@@ -328,7 +327,7 @@ function date_field_load($entity_type, $entities, $field, $instances, $langcode,
       // If the file does not exist, mark the entire item as empty.
       if (is_array($item)) {
         $timezone = isset($item['timezone']) ? $item['timezone'] : '';
-        $item['timezone'] = date_get_timezone($field['settings']['tz_handling'], $timezone);
+        $timezone_db = date_get_timezone_db($field['settings']['tz_handling'], $timezone);
         $item['timezone_db'] = $timezone_db;
         $item['date_type'] = $field['type'];
         if (!empty($field['settings']['cache_enabled']) && ($delta < $field['settings']['cache_count'] || $field['settings']['cache_count'] == 0)) {
diff --git a/date.module b/date.module
index 91c0b65..089534b 100644
--- a/date.module
+++ b/date.module
@@ -210,8 +210,9 @@ function date_formatter_process($formatter, $entity_type, $entity, $field, $inst
   $field_name = $field['field_name'];
   $format = date_formatter_format($formatter, $settings, $granularity, $langcode);
   $timezone = isset($item['timezone']) ? $item['timezone'] : '';
-  $timezone = date_get_timezone($field['settings']['tz_handling'], $timezone);
-  $timezone_db = date_get_timezone_db($field['settings']['tz_handling']);
+  $timezone = date_get_timezone($field['settings']['tz_handling']);
+  $timezone_db = isset($item['timezone_db']) ? $item['timezone_db'] : '';
+  $timezone_db = date_get_timezone_db($field['settings']['tz_handling'], $timezone_db);
   $db_format = date_type_format($field['type']);
   $process = date_process_values($field);
   foreach ($process as $processed) {
