Jump to content

Archived

This topic is now archived and is closed to further replies.

Marrvel

I hate mondays

Recommended Posts

Hi everyone,

Haven't been around here lately but i'm stuck on a problem so I've come crawling back.

I'm trying to write a script that get's all the mondays between 2 dates starting from the monday of the current week,
heres my code so far:

[code]
<?php
$today = date('w');

$max_date = "2006-12-31";
$max_day = date('w',strtotime($max_date." 01:01:01"));

/* this gets the start date by going back to the nearest monday from today*/
if($today <> 1)
{
$days_from_mon = ($today == 0) ? 6 : $today -1;
$first_monday = date('Y-m-d',strtotime("-".$days_from_mon." days"));
}
else $first_monday = date('Y-m-d');


/* this gets the last monday by going back to the nearest monday from the max date */
if($max_day  <> 1)
{
$days_from_mon = ($max_day  == 0) ? 6 : $max_day  -1;
$last_monday = strtotime($max_date) - (86400 * $days_from_mon);
}
else $last_monday = $max_date;

echo $first_monday." - ".date('Y-m-d',$last_monday)."<br>";

/* this loops though weeks until it meets the max date*/
for($i=0;$week_start <> $last_monday;$i++)
{
$week_start = strtotime($first_monday) + (604800 * $i); #this adds $i number of weeks to the original week
echo date('Y-m-d',$week_start)."<br />";
}
?>
[/code]

This script seems to work fine until it gets to the end of October then for some reason it goes to a sunday which sends it into a infinite loop. I just can't figure out why this happens

Thanks in advance

Rob

Share this post


Link to post
Share on other sites
try
[code]<?php
$today = (date('w') + 6) % 7;
$max_date = strtotime ('2006-12-31');

$mon = strtotime ("-$today days", mktime(0,0,0));
while ($mon <= $max_date) {
echo date('D,  d M Y', $mon). '<br />';
$mon = strtotime ('+7 days', $mon);
}

?>[/code]

Share this post


Link to post
Share on other sites

×

Important Information

We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.