use DateTime::Event::Recurrence; my $fiscal = monthly DateTime::Event::Recurrence( interval => 3 ); print $fiscal->next( DateTime->today ), "\n"; print $fiscal->current( DateTime->today ), "\n"; # 2005-04-01T00:00:00 # 2005-01-01T00:00:00