diff --git a/docs/changelog/7.x.x.txt b/docs/changelog/7.x.x.txt index 157c38459..1dc2619df 100644 --- a/docs/changelog/7.x.x.txt +++ b/docs/changelog/7.x.x.txt @@ -1,5 +1,6 @@ 7.10.5 - fixed #11950: Username set to 0 when edit user + - fixed #11946: Double time zone correction when addding an event 7.10.4 - Added WebGUI::Fork api diff --git a/lib/WebGUI/Form/Date.pm b/lib/WebGUI/Form/Date.pm index 30c448ead..143df9fc8 100644 --- a/lib/WebGUI/Form/Date.pm +++ b/lib/WebGUI/Form/Date.pm @@ -245,7 +245,10 @@ sub toHtml { my $originalValue = $self->getOriginalValue; my $dt = eval { WebGUI::DateTime->new($session, $originalValue); }; $dt = WebGUI::DateTime->new($session,0) if ! (blessed $dt && $dt->isa('DateTime')); ##Parsing error - $dt->set_time_zone($session->datetime->getTimeZone); + if ($originalValue =~ $isaEpoch) { + ##Epoch date, correct for time zone; + $dt->set_time_zone($session->datetime->getTimeZone); + } $value = $dt->toMysqlDate; } diff --git a/t/Form/Date.t b/t/Form/Date.t index 15fa0b751..41225ac60 100644 --- a/t/Form/Date.t +++ b/t/Form/Date.t @@ -50,7 +50,7 @@ my $testBlock = [ my $formType = 'date'; -my $numTests = 27 + scalar @{ $testBlock } ; +my $numTests = 28 + scalar @{ $testBlock } ; plan tests => $numTests; @@ -145,7 +145,7 @@ is( $date2 = WebGUI::Form::Date->new($session, {defaultValue => '2008-008-001'}); is( getValueFromForm($session, $date2->toHtml), - '1969-12-31', + '1970-01-01', "toHtml: defaultValue in bad mysql format returns date from epoch 0" ); @@ -172,6 +172,12 @@ my $epochal_value = $date_form->getValue; $date_form->set(value => $epochal_value); my $mysql_date = getValueFromForm($session, $date_form->toHtml); is $mysql_date, '2001-08-16', 'Form data processed and rendered round trip'; +$session->request->setup_body({}); + +$session->user({userId => 1, }); +my $day_form = WebGUI::Form::Date->new($session, { name => 'day_date', value=>'2001-08-16'}); +my $day16 = getValueFromForm($session, $day_form->toHtml); +is $day16, '2001-08-16', 'day set correctly in form'; sub getValueFromForm { my ($session, $textForm) = @_;