Browse Source

Bug 25617: (bug 25133 follow-up) 12 PM is not 24 but 0

There was an error in the precedent code, in 12hr format, 12PM is
actually 00:00

Signed-off-by: Nick Clemens <nick@bywatersolutions.com>
Signed-off-by: Julian Maurice <julian.maurice@biblibre.com>
Signed-off-by: Alex Arnaud <alex.arnaud@biblibre.com>

Signed-off-by: Jonathan Druart <jonathan.druart@bugs.koha-community.org>
20.05.x
Jonathan Druart 4 years ago
parent
commit
dd0c7c55fc
  1. 9
      Koha/DateUtils.pm
  2. 27
      t/DateUtils.t

9
Koha/DateUtils.pm

@ -183,7 +183,14 @@ sub dt_from_string {
$dt_params{minute} = 00 unless defined $dt_params{minute};
$dt_params{second} = 00 unless defined $dt_params{second};
$dt_params{hour} += 12 if $ampm && $ampm eq 'PM';
if ( $ampm ) {
if ( $ampm eq 'AM' ) {
$dt_params{hour} = 00 if $dt_params{hour} == 12;
} elsif ( $dt_params{hour} != 12 ) { # PM
$dt_params{hour} += 12;
$dt_params{hour} = 00 if $dt_params{hour} == 24;
}
}
my $dt = eval {
DateTime->new(

27
t/DateUtils.t

@ -4,7 +4,7 @@ use DateTime::TimeZone;
use C4::Context;
use Test::More tests => 76;
use Test::More tests => 79;
use Test::MockModule;
use Test::Warn;
@ -258,7 +258,30 @@ $dt = dt_from_string('2015-01-31 01:02 PM');
is( output_pref( {dt => $dt} ), '31/01/2015 13:02', 'dt_from_string ' );
$dt = dt_from_string('2015-01-31 01:02:03 PM');
is( output_pref( {dt => $dt} ), '31/01/2015 13:02', 'dt_from_string ' );
$dt = dt_from_string('2015-01-31 12:02 AM');
is( output_pref( {dt => $dt} ), '31/01/2015 00:02', 'dt_from_string ' );
$dt = dt_from_string('2015-01-31 12:02:03 AM');
is( output_pref( {dt => $dt} ), '31/01/2015 00:02', 'dt_from_string ' );
subtest 'TimeFormat 12hr' => sub {
plan tests => 4;
$dt = DateTime->new( year => 2020, month => 5, day => 28, hour => 12, minute => 49 );
t::lib::Mocks::mock_preference('TimeFormat', '12hr');
my $output = output_pref({ dt => $dt, dateformat => 'iso' });
$dt = dt_from_string( $output, 'iso' );
is( output_pref( {dt => $dt} ), '28/05/2020 12:49 PM' );
t::lib::Mocks::mock_preference('TimeFormat', '24hr');
is( output_pref( {dt => $dt} ), '28/05/2020 12:49' );
$dt = DateTime->new( year => 2020, month => 5, day => 28, hour => 0, minute => 49 );
t::lib::Mocks::mock_preference('TimeFormat', '12hr');
$output = output_pref({ dt => $dt, dateformat => 'iso' });
$dt = dt_from_string( $output, 'iso' );
is( output_pref( {dt => $dt} ), '28/05/2020 12:49 AM' );
t::lib::Mocks::mock_preference('TimeFormat', '24hr');
is( output_pref( {dt => $dt} ), '28/05/2020 00:49' );
};
# output_pref with no parameters, single parameter (no hash)
is( output_pref(), undef, 'Call output_pref without parameters' );

Loading…
Cancel
Save