Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- # cron runs if dom OR dow
- # i want dom AND dow, so I can do "every second and fourth friday"
- # thus i will create two objects and iterate untill they match
- my $cronDom = new Schedule::Cron::Events( "$min $hour $dom $month * without_dom", Date => [ ( localtime(time()) )[0..5] ] );
- my $cronDow = new Schedule::Cron::Events( "$min $hour * $month $dow without_dom", Date => [ ( localtime(time()) )[0..5] ] );
- my ($sec, $min, $hour, $day, $month, $year);
- # find the prevoius execution time
- ($sec, $min, $hour, $day, $month, $year) = $cronDom->previousEvent; $month+=1; $year+=1900; $domstamp = $day + 30*$month + 30*12*$year;
- ($sec, $min, $hour, $day, $month, $year) = $cronDow->previousEvent; $month+=1; $year+=1900; $dowstamp = $day + 30*$month + 30*12*$year;
- while( $domstamp > $dowstamp ) { # decrease dom
- alert("decreasing dom");
- ($sec, $min, $hour, $day, $month, $year) = $cronDom->previousEvent; $month+=1; $year+=1900; $domstamp = $day + 30*$month + 30*12*$year;
- }
- while( $dowstamp > $domstamp ) { # decrease dow
- ($sec, $min, $hour, $day, $month, $year) = $cronDow->previousEvent; $month+=1; $year+=1900; $dowstamp = $day + 30*$month + 30*12*$year;
- alert("decreasing dow");
- }
- # match!
- my $lastTime = "$year-$month-$day $hour:$min:$sec";
- # find the next execution time
- ($sec, $min, $hour, $day, $month, $year) = $cronDom->nextEvent; $month+=1; $year+=1900; $domstamp = $day + 30*$month + 30*12*$year;
- ($sec, $min, $hour, $day, $month, $year) = $cronDow->nextEvent; $month+=1; $year+=1900; $dowstamp = $day + 30*$month + 30*12*$year;
- ($sec, $min, $hour, $day, $month, $year) = $cronDom->nextEvent; $month+=1; $year+=1900; $domstamp = $day + 30*$month + 30*12*$year;
- ($sec, $min, $hour, $day, $month, $year) = $cronDow->nextEvent; $month+=1; $year+=1900; $dowstamp = $day + 30*$month + 30*12*$year;
- while( $domstamp < $dowstamp ) { # increase dom
- alert("increasing dom");
- ($sec, $min, $hour, $day, $month, $year) = $cronDom->nextEvent; $month+=1; $year+=1900; $domstamp = $day + 30*$month + 30*12*$year;
- }
- while( $dowstamp < $domstamp ) { # increase dow
- ($sec, $min, $hour, $day, $month, $year) = $cronDow->nextEvent; $month+=1; $year+=1900; $dowstamp = $day + 30*$month + 30*12*$year;
- alert("increasing dow");
- }
- # match!
- my $thisTime = "$year-$month-$day $hour:$min:$sec";
- print "this time $lastTime -- next time $thisTime -- time between is just one select statement away.\n";
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement