...

View Full Version : Iterate through DateTime range



byuhobbes85
06-29-2010, 11:43 PM
Simple question...

I would like to iterate through a range of dates--I'm thinking PHP's DateTime class will work best for this. Here is the question--if I have a start date and an end date, how can I iterate through every date between the two (inclusive)?

Did I state this clearly?

Thanks!

Fou-Lu
06-29-2010, 11:54 PM
What version of PHP are you using?

byuhobbes85
06-30-2010, 12:12 AM
5.2.11

Fou-Lu
06-30-2010, 12:30 AM
Dang. 5.3.0 has a DatePeriod class thats built in to do just this task for you.
Prior to this, I'd probably just do a loop to step through it since pretty much all date mathematics are unavailable.
Something like this will probably do it:


$now = strtotime('now');
$later = strtotime('next week', $now);
$format = 'F j, Y';
$step = '+1 day';

while ($now < $later) // maybe <=?
{
printf("Date: %s<br />", date($format, $now));
$now = strtotime($step, $now);
}


Now, to do the same when DatePeriod is available, methinks its like so:


$now = new DateTime();
$later = new DateTime('next week');
$period = new DatePeriod($now, 'P1D', $later);
foreach ($period AS $day)
{
print $day->format('F j, Y');
}


DateTime would be useful, except that without any of the subtraction or difference methods it becomes a little on the useless side.



EZ Archive Ads Plugin for vBulletin Copyright 2006 Computer Help Forum