#!/usr/bin/perl use strict; use warnings; use DateTime::Format::Strptime; use Datetime::Set; my $strp = DateTime::Format::Strptime->new( pattern => '%Y-%m-%d %T', ); my $datf = qq{2012-01-01 04:00:00}; my $datt = qq{2012-01-02 23:00:00}; my $start = $strp->parse_datetime($datf); my $end = $strp->parse_datetime($datt); my $iter; my $set = DateTime::Set->from_recurrence( after => $start, before => $end, recurrence => sub { return $_[0]->add( hours => 1 )->truncate( to => 'hour' ) }, ); my $datf_plus = $start->add( hours => 10 ); my $set_2 = DateTime::Set->from_datetimes( dates => [ $datf_plus ] ); if ( $set->contains( $set_2 ) ) # or intersects { print "\nYes!\n"; print $set->contains( $set_2 ), "\n"; } else { print "\nNo!\n"; print $set->contains( $set_2 ), "\n"; }