/**
  * See $_timezone property for description of what the timezone property is for.  This SETS the timezone internally for being able to reference what timezone we are running conversions on when converting TO the internal timezone (UTC Unix Timestamp) for the object OR when converting FROM the internal timezone (UTC Unix Timestamp).
  *  This is available to all child classes that may be using the EE_Datetime_Field for a field data type.
  *
  * @access public
  * @param string $timezone A valid timezone string as described by @link http://www.php.net/manual/en/timezones.php
  * @return void
  */
 public function set_timezone($timezone = '')
 {
     $timezone = empty($timezone) ? get_option('timezone_string') : $timezone;
     //if timezone is STILL empty then let's get the GMT offset and then set the timezone_string using our converter
     if (empty($timezone)) {
         //let's get a the WordPress UTC offset
         $offset = get_option('gmt_offset');
         $timezone = EE_Datetime_Field::timezone_convert_to_string_from_offset($offset);
     }
     EE_Datetime_Field::validate_timezone($timezone);
     //just running validation on the timezone.
     $this->_timezone = $timezone;
     //make sure we clear all cached properties because they won't be relevant now
     $this->_clear_cached_properties();
 }