NAME
    Date::Set - Date set math

SYNOPSIS
            use Date::Set;

            my $interval = Date::Set->new('20010501')->quantize(unit=>'months');
            print "This month: ", $interval, "\n\n";
            print "Weeks this month: ", $interval->quantize(unit=>'weeks'), "\n\n";
            print "Tuesdays this month: ", $interval->quantize(unit=>'weeks')->
                offset( mode => 'begin', unit=>'days', value => [ 2, 3] );

DESCRIPTION
    Date::Set is a module for date/time sets.

    It requires Date::ICal. If you don't need ICal functionality, use
    Set::Infinite instead.

METHODS
  event

            event()

    Constructor. Returns 'forever', that is: (-Inf .. Inf)

  period

            period( time => [time1, time2] )

    Another constructor. Returns [time1 .. time2]

  dtstart

            dtstart( start => time1 )

    Yet another constructor. Returns [time1 .. Inf)

  duration

            duration( unit => months, duration => 10 )

    All intervals are modified to 'duration'.

    'unit' parameter can be years, months, days, weeks, hours, minutes, or
    seconds.

  rrule

        rrule ( BYMONTH => [ list ], BYWEEKNO => [ list ],
            BYYEARDAY => [ list ],   BYMONTHDAY => [ list ],
            BYDAY => [ list ],       BYHOUR => [ list ],
            BYMINUTE => [ list ],    BYSECOND => [ list ],
            BYSETPOS => [ list ],
            UNTIL => time, FREQ => freq, INTERVAL => n, COUNT => n )

    Implements RRULE from RFC2445. (some documentation needed!)

  occurrences

            occurrences( period => date-set )

    Returns the occurrences for a given period.

INHERITED METHODS
    These methods are inherited from Set::Infinite.

  Logic

        $logic = $a->intersects($b);
        $logic = $a->contains($b);
        $logic = $a->is_null;

  Set

        $i = $a->union($b);     
        $i = $a->intersection($b);
        $i = $a->complement;
        $i = $a->complement($b);
        $i = $a->span;   

  Scalar

        $i = $a->min;
        $i = $a->max;
        $i = $a->size;  

  Other set methods

        $a->real;
        $a->integer;

        quantize( parameters )
                Makes equal-sized subsets.

        select( parameters )

            Selects set members based on their ordered positions.
            Selection is more useful after quantization.

            freq     - default=1
            by       - default=[0]
            interval - default=1
            count    - dafault=infinite

        offset ( parameters )

            Offsets the subsets.

            value   - default=[0,0]
            mode    - default='offset'. Possible values are: 'offset', 'begin', 'end'.

        type($i)

            chooses an object data type. 

            type('Set::Infinite::Date');

        tolerance(0)    defaults to real sets (default)
        tolerance(1)    defaults to integer sets

    Note: 'unit' parameter can be years, months, days, weeks, hours,
    minutes, or seconds.

AUTHOR
            Flavio Soibelmann Glock <fglock@pucrs.br>

