DateTimeX-Moment
view release on metacpan or search on metacpan
lib/DateTimeX/Moment/Duration.pm view on Meta::CPAN
return wantarray ? @ret{@units} : $ret{$units[0]};
}
# XXX: limit mode only
sub is_wrap_mode { 0 }
sub is_limit_mode { 1 }
sub is_preserve_mode { 0 }
sub end_of_month_mode { 'limit' }
sub calendar_duration {
my $self = shift;
my $clone = $self->clone;
$clone->{$_} = 0 for qw/minutes seconds nanoseconds/;
return $clone;
}
sub clock_duration {
my $self = shift;
my $clone = $self->clone;
$clone->{$_} = 0 for qw/months days/;
t/11duration.t view on Meta::CPAN
weeks => 3,
days => 4,
hours => 6,
minutes => 7,
seconds => 8,
nanoseconds => 9,
);
my $dur = DateTimeX::Moment::Duration->new( %pairs );
my $calendar_dur = $dur->calendar_duration;
is( $calendar_dur->delta_months, 14, "date - delta_months is 14" );
is( $calendar_dur->delta_minutes, 0, "date - delta_minutes is 0" );
is( $calendar_dur->delta_seconds, 0, "date - delta_seconds is 0" );
is(
$calendar_dur->delta_nanoseconds, 0,
"date - delta_nanoseconds is 0"
);
ok( $calendar_dur->is_limit_mode, "limit mode" );
my $clock_dur = $dur->clock_duration;
is( $clock_dur->delta_months, 0, "time - delta_months is 0" );
is( $clock_dur->delta_minutes, 367, "time - delta_minutes is 367" );
is( $clock_dur->delta_seconds, 8, "time - delta_seconds is 8" );
is( $clock_dur->delta_nanoseconds, 9, "time - delta_nanoseconds is 9" );
ok( $clock_dur->is_limit_mode, "limit mode" );
}
{
t/24from-object.t view on Meta::CPAN
is( $dt1->year, 1970, 'year is 1970' );
is( $dt1->hour, 1, 'hour is 1' );
is( $dt1->nanosecond, 100, 'nanosecond is 100' );
{
my $t1 = DateTime::Calendar::_Test::WithoutTZ->new(
rd_days => 1,
rd_secs => 0
);
# Tests creating objects from other calendars (without time zones)
my $t2 = DateTimeX::Moment->from_object( object => $t1 );
isa_ok( $t2, 'DateTimeX::Moment' );
is(
$t2->datetime, '0001-01-01T00:00:00',
'convert from object without tz'
);
ok( $t2->time_zone->is_floating, 'time_zone is floating' );
}
if (eval { require DateTime::Duration; 1 }) {
my $tz = DateTime::TimeZone->new( name => 'America/Chicago' );
my $t1 = DateTime::Calendar::_Test::WithTZ->new(
rd_days => 2, rd_secs => 0,
time_zone => $tz
);
# Tests creating objects from other calendars (with time zones)
my $t2 = DateTimeX::Moment->from_object( object => $t1 );
isa_ok( $t2, 'DateTimeX::Moment' );
is( $t2->time_zone->name, 'America/Chicago', 'time_zone is preserved' );
}
{
my $tz = DateTime::TimeZone->new( name => 'UTC' );
my $t1 = DateTime::Calendar::_Test::WithTZ->new(
rd_days => 720258,
t/38local-subtract.t view on Meta::CPAN
DateTimeX::Moment->compare(
$dt2->clone->subtract_duration($dur),
$dt1->clone->add( hours => 1 )
),
0,
'dt2 - dur != dt1 (not reversible)'
);
is(
DateTimeX::Moment->compare(
$dt2->clone->subtract_duration( $dur->clock_duration )
->subtract_duration( $dur->calendar_duration ),
$dt1
),
0,
'dt2 - dur->clock - dur->cal = dt1 (reversible when componentized)'
);
my $dur2 = $dt1->subtract_datetime($dt2);
my %deltas2 = $dur2->deltas;
is( $deltas2{months}, 0, 'delta_months is 0' );
is( $deltas2{days}, -1, 'delta_days is 1' );
is( $deltas2{minutes}, -3, 'delta_minutes is 3' );
is( $deltas2{seconds}, 0, 'delta_seconds is 0' );
is( $deltas2{nanoseconds}, 0, 'delta_nanoseconds is 0' );
is(
$dt2->clone->add_duration($dur2)->datetime, '2003-04-05T02:58:00',
'dt2 + dur2 != dt1'
);
is(
DateTimeX::Moment->compare(
$dt2->clone->add_duration( $dur2->clock_duration )
->add_duration( $dur2->calendar_duration ),
$dt1
),
0,
'dt2 + dur2->clock + dur2->cal = dt1'
);
is(
DateTimeX::Moment->compare( $dt1->clone->subtract_duration($dur2), $dt2 ), 0,
'dt1 - dur2 = dt2'
);
( run in 0.258 second using v1.01-cache-2.11-cpan-5dc5da66d9d )