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.308 second using v1.01-cache-2.11-cpan-5dc5da66d9d )