Index: trunk/core/kernel/utility/formatters/date_formatter.php =================================================================== diff -u -N -r8006 -r8567 --- trunk/core/kernel/utility/formatters/date_formatter.php (.../date_formatter.php) (revision 8006) +++ trunk/core/kernel/utility/formatters/date_formatter.php (.../date_formatter.php) (revision 8567) @@ -8,7 +8,7 @@ * @var LanguagesItem */ var $language = null; - + function kDateFormatter() { parent::kBase(); @@ -28,7 +28,7 @@ // default value is date+sepatator+time $field_options[$type] = '_regional_DateTimeFormat'; } - + if ($field_options[$type] == '_regional_DateTimeFormat') { $field_options[$type] = $format['date'].$field_options['date_time_separator'].$format['time']; } @@ -37,7 +37,7 @@ } $format['mixed'] = $field_options[$type]; } - + /** * Returns separate formats for date,time,combined for input & display formats * @@ -49,16 +49,16 @@ { if ($type == 'mixed') { if (!isset($field_options['date_time_separator'])) $field_options['date_time_separator'] = ' '; - + $display_format = Array (); $input_format = Array (); - + list ($display_format['date'], $input_format['date']) = $this->GetSeparateFormats($field_options, 'date'); list ($display_format['time'], $input_format['time']) = $this->GetSeparateFormats($field_options, 'time'); - + $this->SetMixedFormat($field_options, $display_format, 'format'); $this->SetMixedFormat($field_options, $input_format, 'input_format'); - + return Array ($display_format, $input_format); } else { @@ -69,38 +69,38 @@ else { $format = $this->language->GetDBField(ucfirst($type).'Format'); } - + // 2. set input format if (isset($field_options['input_'.$type.'_format'])) { $input_format = $field_options['input_'.$type.'_format']; } else { $input_format = $this->language->GetDBField('Input'.ucfirst($type).'Format'); } - + return Array ($format, $input_format); } } function PrepareOptions($field_name, &$field_options, &$object) { 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 $opts['format'] = $display_format['time']; $opts['input_format'] = $input_format['time']; @@ -176,7 +176,11 @@ $options = $object->GetFieldOptions($field_name); if ( isset($format) ) $options['format'] = $format; - return adodb_date($options['format'], $value + $this->Application->TimeZoneAdjustment($options['use_timezone'] ? null : 'GMT')); + if (!$options['use_timezone']) { + return adodb_gmdate($options['format'], $value); + } + + return adodb_date($options['format'], $value + $this->Application->TimeZoneAdjustment()); } function HumanFormat($format) @@ -389,8 +393,12 @@ $object->FieldErrors[$field_name]['pseudo'] = 'bad_date_format'; return $value; } - - return adodb_mktime($hour, $minute, $second, $month, $day, $year) - $this->Application->TimeZoneAdjustment($options['use_timezone'] ? null : 'GMT'); + + if (!$options['use_timezone']) { + return adodb_gmmktime($hour, $minute, $second, $month, $day, $year); + } + + return adodb_mktime($hour, $minute, $second, $month, $day, $year) - $this->Application->TimeZoneAdjustment(); } function GetSample($field, &$options, &$object)