diff --git a/date_views/includes/date_views_argument_handler.inc b/date_views/includes/date_views_argument_handler.inc
index 20eedff..7b7a25f 100644
--- a/date_views/includes/date_views_argument_handler.inc
+++ b/date_views/includes/date_views_argument_handler.inc
@@ -192,7 +192,15 @@ class date_views_argument_handler extends date_views_argument_handler_simple {
         $date_handler = new date_sql_handler($field['sql_type'], date_default_timezone());
         $date_handler->granularity = $this->options['granularity'];
         $date_handler->db_timezone = date_get_timezone_db($field['tz_handling']);
-        $date_handler->local_timezone = date_get_timezone($field['tz_handling']);
+        if (empty($this->options['timezone']) || $this->options['timezone'] == 'date') {
+          $date_handler->local_timezone = date_get_timezone($field['tz_handling']);
+        }
+        else if ($this->options['timezone'] == 'user') {
+          $date_handler->local_timezone = date_default_timezone();
+        }
+        else {
+          $date_handler->local_timezone = $this->options['timezone'];
+        }
         date_views_set_timezone($date_handler, $this, $field);
         $this->query_fields[] = array('field' => $field, 'date_handler' => $date_handler);
       }
diff --git a/date_views/includes/date_views_argument_handler_simple.inc b/date_views/includes/date_views_argument_handler_simple.inc
index 2839b95..a9d51c8 100644
--- a/date_views/includes/date_views_argument_handler_simple.inc
+++ b/date_views/includes/date_views_argument_handler_simple.inc
@@ -28,7 +28,15 @@ class date_views_argument_handler_simple extends views_handler_argument_date {
         $this->original_table = $this->definition['table'];
       }
       $this->date_handler->db_timezone = date_get_timezone_db($field['settings']['tz_handling']);
-      $this->date_handler->local_timezone = date_get_timezone($field['settings']['tz_handling']);
+      if (empty($options['timezone']) || $options['timezone'] == 'date') {
+        $this->date_handler->local_timezone = date_get_timezone($field['settings']['tz_handling']);
+      }
+      else if ($options['timezone'] == 'user') {
+        $this->date_handler->local_timezone = date_default_timezone();
+      }
+      else {
+        $this->date_handler->local_timezone = $options['timezone'];
+      }
     }
     $this->date_handler->granularity = $this->options['granularity'];
     // This value needs to be initialized so
@@ -96,6 +104,7 @@ class date_views_argument_handler_simple extends views_handler_argument_date {
     $options['granularity_reset'] = array('default' => FALSE);
     $options['default_argument_type']['default'] = 'date';
     $options['add_delta'] = array('default' => '');
+    $options['timezone'] = array('default' => 'date');
     $options['use_fromto'] = array('default' => '');
     $options['title_format'] = array('default' => '');
     $options['title_format_custom'] = array('default' => '');
@@ -200,6 +209,16 @@ class date_views_argument_handler_simple extends views_handler_argument_date {
       // Only let mere mortals tweak this setting for multi-value fields.
       '#access' => $access,
     );
+
+    $form['timezone'] = array(
+      '#type' => 'select',
+      '#title' => t('Timezone'),
+      '#default_value' => $this->options['timezone'],
+      '#options' => array(
+        'date' => t("Date field's default timezone"),
+        'user' => t("Current user's timezone"),
+      ) + system_time_zones(),
+    );
   }
 
   /**
diff --git a/date_views/includes/date_views_filter_handler.inc b/date_views/includes/date_views_filter_handler.inc
index ae6944e..55b5934 100644
--- a/date_views/includes/date_views_filter_handler.inc
+++ b/date_views/includes/date_views_filter_handler.inc
@@ -204,7 +204,15 @@ class date_views_filter_handler extends date_views_filter_handler_simple {
         $date_handler = new date_sql_handler($field['sql_type'], date_default_timezone());
         $date_handler->granularity = $this->options['granularity'];
         $date_handler->db_timezone = date_get_timezone_db($field['tz_handling']);
-        $date_handler->local_timezone = date_get_timezone($field['tz_handling']);
+        if (empty($this->options['timezone']) || $this->options['timezone'] == 'date') {
+          $date_handler->local_timezone = date_get_timezone($field['tz_handling']);
+        }
+        else if ($this->options['timezone'] == 'user') {
+          $date_handler->local_timezone = date_default_timezone();
+        }
+        else {
+          $date_handler->local_timezone = $this->options['timezone'];
+        }
         $this->query_fields[] = array('field' => $field, 'date_handler' => $date_handler);
       }
     }
diff --git a/date_views/includes/date_views_filter_handler_simple.inc b/date_views/includes/date_views_filter_handler_simple.inc
index 4fa4c40..9227e74 100644
--- a/date_views/includes/date_views_filter_handler_simple.inc
+++ b/date_views/includes/date_views_filter_handler_simple.inc
@@ -20,7 +20,15 @@ class date_views_filter_handler_simple extends views_handler_filter_date {
         $this->date_handler->date_type = $field['type'];
       }
       $this->date_handler->db_timezone = date_get_timezone_db($field['settings']['tz_handling']);
-      $this->date_handler->local_timezone = date_get_timezone($field['settings']['tz_handling']);
+      if (empty($options['timezone']) || $options['timezone'] == 'date') {
+        $this->date_handler->local_timezone = date_get_timezone($field['settings']['tz_handling']);
+      }
+      else if ($options['timezone'] == 'user') {
+        $this->date_handler->local_timezone = date_default_timezone();
+      }
+      else {
+        $this->date_handler->local_timezone = $options['timezone'];
+      }
     }
     $this->form_submitted = FALSE;
     $this->date_handler->granularity = isset($options['granularity']) ? $options['granularity'] : 'day';
@@ -39,6 +47,7 @@ class date_views_filter_handler_simple extends views_handler_filter_date {
     $options['form_type'] = array('default' => 'date_select');
     $options['default_date'] = array('default' => '');
     $options['default_to_date'] = array('default' => '');
+    $options['timezone'] = array('default' => 'date');
     $options['year_range'] = array('default' => '-3:+3');
     $options['add_delta'] = array('default' => '');
     return $options;
@@ -75,7 +84,8 @@ class date_views_filter_handler_simple extends views_handler_filter_date {
     $default_option = $prefix == 'max' ? $options['default_to_date'] : $options['default_date'];
     if (!empty($default_option)) {
       str_replace('now', 'today', $default_option);
-      $date = date_create($default_option, date_default_timezone_object());
+      $tz = !empty($this->options['timezone']) ? $this->options['timezone'] : date_default_timezone();
+      $date = date_create($default_option, timezone_open($tz));
       $default_date = !empty($date) ? $date->format($this->format) : '';
 
       // The format for our filter is in ISO format, but the widget will need it in datetime format.
@@ -233,6 +243,19 @@ class date_views_filter_handler_simple extends views_handler_filter_date {
     return $year_range;
   }
 
+  function options_form(&$form, &$form_state) {
+    parent::options_form($form, $form_state);
+    $form['timezone'] = array(
+      '#type' => 'select',
+      '#title' => t('Timezone'),
+      '#default_value' => $this->options['timezone'],
+      '#options' => array(
+        'date' => t("Date field's default timezone"),
+        'user' => t("Current user's timezone"),
+      ) + system_time_zones(),
+    );
+  }
+
   function extra_options_form(&$form, &$form_state) {
     parent::extra_options_form($form, $form_state);
     $form['form_type'] = array(
