Index: trunk/core/kernel/application.php =================================================================== diff -u -N -r8005 -r8006 --- trunk/core/kernel/application.php (.../application.php) (revision 8005) +++ trunk/core/kernel/application.php (.../application.php) (revision 8006) @@ -2378,8 +2378,12 @@ } } - function TimeZoneAdjustment($time_zone=null) + function TimeZoneAdjustment($time_zone = null) { + if ($time_zone == 'GMT') { + return (-1) * adodb_date('Z'); + } + $target_zone = isset($time_zone) ? $time_zone : $this->ConfigValue('Config_Site_Time'); return 3600 * ($target_zone - $this->ConfigValue('Config_Server_Time')); } Index: trunk/core/kernel/utility/formatters/date_formatter.php =================================================================== diff -u -N -r7920 -r8006 --- trunk/core/kernel/utility/formatters/date_formatter.php (.../date_formatter.php) (revision 7920) +++ trunk/core/kernel/utility/formatters/date_formatter.php (.../date_formatter.php) (revision 8006) @@ -87,13 +87,18 @@ list ($display_format, $input_format) = $this->GetSeparateFormats($field_options, 'mixed'); $field_options['sub_fields'] = Array('date' => $field_name.'_date', 'time' => $field_name.'_time'); - + if (!isset($field_options['use_timezone'])) { + // apply timezone from server + $field_options['use_timezone'] = true; + } + $add_fields = Array(); // 1. add DATE virtual field $opts = Array('master_field' => $field_name, 'formatter'=>'kDateFormatter', 'format' => $display_format['date'], 'input_format' => $input_format['date']); if ( isset($field_options['default']) ) $opts['default'] = $field_options['default']; if ( isset($field_options['required']) ) $opts['required'] = $field_options['required']; + if ( isset($field_options['use_timezone']) ) $opts['use_timezone'] = $field_options['use_timezone']; $add_fields[$field_name.'_date'] = $opts; // 2. add TIME virtual field @@ -171,7 +176,7 @@ $options = $object->GetFieldOptions($field_name); if ( isset($format) ) $options['format'] = $format; - return adodb_date($options['format'], $value + $this->Application->TimeZoneAdjustment()); + return adodb_date($options['format'], $value + $this->Application->TimeZoneAdjustment($options['use_timezone'] ? null : 'GMT')); } function HumanFormat($format) @@ -384,8 +389,8 @@ $object->FieldErrors[$field_name]['pseudo'] = 'bad_date_format'; return $value; } - // echo "day: $day, month: $month, year: $year, hour: $hour, minute: $minute
"; - return adodb_mktime($hour, $minute, $second, $month, $day, $year) - $this->Application->TimeZoneAdjustment(); + + return adodb_mktime($hour, $minute, $second, $month, $day, $year) - $this->Application->TimeZoneAdjustment($options['use_timezone'] ? null : 'GMT'); } function GetSample($field, &$options, &$object)