1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86
|
use strict;
use warnings;
use Test::More;
use DateTime;
{
my $dt = DateTime->new(
year => 1997, month => 6, day => 30,
hour => 23, minute => 58, second => 59,
time_zone => 'UTC'
);
$dt->set_time_zone('+00:00:30');
is( $dt->datetime, '1997-06-30T23:59:29', '+00:00:30 leap second T-61' );
}
{
my $dt = DateTime->new(
year => 1997, month => 6, day => 30,
hour => 23, minute => 59, second => 29,
time_zone => 'UTC'
);
$dt->set_time_zone('+00:00:30');
is( $dt->datetime, '1997-06-30T23:59:59', '+00:00:30 leap second T-31' );
}
{
local $TODO = 'offsets with seconds are broken near leap seconds';
my $dt = DateTime->new(
year => 1997, month => 6, day => 30,
hour => 23, minute => 59, second => 30,
time_zone => 'UTC'
);
$dt->set_time_zone('+00:00:30');
is( $dt->datetime, '1997-06-30T23:59:60', '+00:00:30 leap second T-30' );
}
{
local $TODO = 'offsets with seconds are broken near leap seconds';
my $dt = DateTime->new(
year => 1997, month => 6, day => 30,
hour => 23, minute => 59, second => 31,
time_zone => 'UTC'
);
$dt->set_time_zone('+00:00:30');
is( $dt->datetime, '1997-07-01T00:00:00', '+00:00:30 leap second T-29' );
}
{
local $TODO = 'offsets with seconds are broken near leap seconds';
my $dt = DateTime->new(
year => 1997, month => 6, day => 30,
hour => 23, minute => 59, second => 60,
time_zone => 'UTC'
);
$dt->set_time_zone('+00:00:30');
is( $dt->datetime, '1997-07-01T00:00:30', '+00:00:30 leap second T-0' );
}
{
my $dt = DateTime->new(
year => 1997, month => 7, day => 1,
hour => 0, minute => 0, second => 0,
time_zone => 'UTC'
);
$dt->set_time_zone('+00:00:30');
is( $dt->datetime, '1997-07-01T00:00:30', '+00:00:30 leap second T+1' );
}
done_testing();
|