how about:
---
#!/usr/bin/perl
use strict;
use warnings;
use DateTime::Format::ICal;
# A file is to be processed if it arrives on the system anytime
# between Friday midnight and Wednesday 8:00 pm.
my $ical_start = 'FREQ=WEEKLY;BYDAY=SA;BYHOUR=0';
my $ical_end = 'FREQ=WEEKLY;BYDAY=WE;BYHOUR=8';
my $dt_set = DateTime::SpanSet->from_sets(
start_set => DateTime::Format::ICal->parse_recurrence( recurrence
=> $ical_start ),
end_set => DateTime::Format::ICal->parse_recurrence( recurrence
=> $ical_end ) );
my $dt = DateTime->new(
year => 2010,
month => 1,
day => 4,
);
$dt_set->contains( $dt )
? print "$dt is in range\n"
: print "$dt is not in range\n";
$dt = DateTime->new(
year => 2010,
month => 1,
day => 8,
);
$dt_set->contains( $dt )
? print "$dt is in range\n"
: print "$dt is not in range\n";
---
Flávio S. Glock
2010/1/3 James E Keenan <[email protected]>:
>
> The attached file, zinspan.pl, is my first attempt at using DateTime to
> solve a practical problem. I am looking for feedback both on the program's
> validity and on whether there is the making of a new DateTime module in it.
>
> Problem: Suppose that a 'week' can begin at an arbitrarily chosen day of
> the week and time of day. Suppose further that that week can be divided
> into two subspans: one in which an event is permitted to occur, and the
> other in which the event is not permitted to occur. Write a function that
> returns true if the event's date is in the permitted subspan and false if it
> is in the forbidden subspan.
>
> Example: A file is to be processed if it arrives on the system anytime
> between Friday midnight and Wednesday 8:00 pm. The file has arrived. Is it
> okay to process it?
>
> Thank you very much.
> Jim Keenan