NAME

Panda::Date::Int - Interval date object.

DESCRIPTION

Interval date is a period of time bound to particular point in time. Interval date consists of start date and end date.

CLASS METHODS

new($date | $epoch | \@ymdhms | \%ymdhms | $iso_fmt, $date | $epoch | \@ymdhms | \%ymdhms | $iso_fmt)

Creates interval object from 2 dates. Input data can be anything that date() constructor supports.

new($stringified | \@from_till)

Creates interval object from it's stringified form (->to_string) or array with from and till dates.

OBJECT METHODS

set($date | $epoch | \@ymdhms | \%ymdhms | $iso_fmt, $date | $epoch | \@ymdhms | \%ymdhms | $iso_fmt)

Set interval from data. This is much faster than creating new object.

set($stringified | \@from_till)

Set interval from stringified form or array with from and till dates.

from([$from])

Lower date, Panda::Date.

till([$till])

Upper date, Panda::Date.

sec(), secs, second, seconds, duration

Converts interval to accurate number of seconds between from() and till().

imin(), imins, iminute, iminutes

Converts interval to accurate integer number of minutes between from() and till().

min(), mins, minute, minutes

Converts interval to accurate number of minutes between from() and till().

ihour(), ihours

Converts interval to accurate integer number of hours between from() and till().

hour(), hours

Converts interval to accurate number of hours between from() and till().

iday(), idays

Converts interval to accurate integer number of days between from() and till().

day(), days

Converts interval to accurate number of days between from() and till().

imonth(), imonths, imon, imons

Converts interval to accurate integer number of months between from() and till().

month(), months, mon, mons

Converts interval to accurate number of months between from() and till(). Fractional part are based on how many days left till last day of month.

iyear(), iyears

Converts interval to accurate integer number of years between from() and till().

year(), years

Converts interval to accurate number of years between from() and till().

relative ()

Returns Panda::Date::Rel that equals till() minus from(). Keep in mind that duration() not always equal to relative->duration() ! But from() + relative() always equals till()

"", to_string(), string(), as_string()

Returns string in "<LOWER DATE> ~ <UPPER DATE>" format, for example "2012-01-01 03:04:05 ~ 2013-02-03 05:06:14". If any of 'till' or 'from' dates have error, returns undef.

'+', add_new($reldate | $rel_string | $seconds | \@rel_array | \%rel_hash)

Adds relative date to interval, i.e. adds reldate to it's lower and upper dates. Reldate can be Panda::Date::Rel object or any data valid for its constructor.

'+=', add($reldate | $rel_string | $seconds | \@rel_array | \%rel_hash)

Same as add(), but changes current object instead of creating new one.

'-', subtract_new($reldate | $rel_string | $seconds | \@rel_array | \%rel_hash)

Subtracts relative date from interval, i.e. subtracts reldate from its upper and lower dates. Reldate can be Panda::Date::Rel object or any data valid for its constructor.

'-=', subtract($reldate | $rel_string | $seconds | \@rel_array | \%rel_hash)

Same as subtract_new(), but changes current object instead of creating new one.

'<=>', compare($idate | [...])

Compares 2 interval dates and return -1, 0 or 1. It's based on duration(). Interval date can be number (duration), Panda::Date::Int object or arrayref with constructor data.

'eq', equals($idate | [...])

Compares 2 intervals and returns true or false. It's based on full equality (i.e. from1 eq from2 and till1 eq till2). Interval date can be Panda::Date::Int object or arrayref with constructor data.

'neg', negative_new() - unary '-'

Swap from and till.

negative()

Same as negative_new(), but changes current object instead of creating new one.

includes($date | $epoch | \@ymdhms | \%ymdhms | $iso_fmt)

Returns -1 if date presented by argument is greater than till() date.

Returns 0 if date is between from() and till() dates.

Returns 1 otherwise.

OPERATOR OVERLOAD RULES

See screenshot http://crazypanda.ru/v/clip2net/p/F/0WuXfVRKMM.png

STORABLE SERIALIZATION

Storable serialization is fully supported. That means you're able to freeze Panda::Date::Int objects and thaw serialized data back without losing any information.

AUTHOR

Pronin Oleg <syber@cpan.org>, Crazy Panda, CP Decision LTD

LICENSE

You may distribute this code under the same terms as Perl itself.