@@ -, +, @@ --- Koha/DateUtils.pm | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) --- a/Koha/DateUtils.pm +++ a/Koha/DateUtils.pm @@ -117,7 +117,7 @@ sub dt_from_string { (?\d{2}) : (?\d{2}) - (\.\d{1,3})?(([Zz])|([\+|\-]([01][0-9]|2[0-3]):[0-5][0-9])) + (\.\d{1,3})?(([Zz])|((?[\+|\-])(?[01][0-9]|2[0-3]):(?[0-5][0-9]))) /xms; } elsif ( $date_format eq 'iso' or $date_format eq 'sql' ) { @@ -154,6 +154,9 @@ sub dt_from_string { minute => $+{minute}, second => $+{second}, ); + if ( $+{offset} ) { + $tz = DateTime::TimeZone->new( name => $+{offset} . $+{hours} . $+{minutes} ); + } } elsif ( $date_string =~ $fallback_re ) { %dt_params = ( year => $+{year}, @@ -180,7 +183,7 @@ sub dt_from_string { DateTime->new( %dt_params, # No TZ for dates 'infinite' => see bug 13242 - ( $dt_params{year} < 9999 ? ( time_zone => $tz->name ) : () ), + ( $dt_params{year} < 9999 ? ( time_zone => $tz ) : () ), ); }; if ($@) { @@ -188,7 +191,7 @@ sub dt_from_string { $dt = DateTime->new( %dt_params, # No TZ for dates 'infinite' => see bug 13242 - ( $dt_params{year} < 9999 ? ( time_zone => $tz->name ) : () ), + ( $dt_params{year} < 9999 ? ( time_zone => $tz ) : () ), ); } return $dt; --