Reputation: 22899
I'm trying to list a few date ranges based off the last Tuesday which has past. What I was expecting was...
June 6 - June 12
May 30 - June5
But what I got was
June 6 - June 12
- December 24
My code is as follows
$lastWensE1 = date('F j', strtotime("last tuesday"));
$lastWensS1 = strtotime ( '-6 day' , strtotime ( $lastWensE1 ) ) ;
$lastWensE2 = strtotime ( '-7 day' , strtotime ( $lastWensE1 ) ) ;
$lastWensS2 = strtotime ( '-7 day' , strtotime ( $lastWensS1 ) ) ;
echo date('F j', $lastWensS1)." - ".$lastWensE1;
echo "<br/>";
echo date('F j', $lastWensS2)." - ".date('F j', $lastWensE2);
Upvotes: 0
Views: 151
Reputation: 12753
All the calculations of the past 3 Tuesdays should be done first, before trying to format the results, this gives clearer code:
$lastTue1 = strtotime('last tuesday');
$lastTue2 = strtotime('-7 day' , $lastTue1 );
$lastTue3 = strtotime('-7 day' , $lastTue2 );
echo date('F j', strtotime('+1 day', $lastTue2))." - ".date('F j', $lastTue1);
echo "<br/>";
echo date('F j', strtotime('+1 day', $lastTue3))." - ".date('F j', $lastTue2);
This gives:
June 6 - June 12
May 30 - June 5
Upvotes: 1
Reputation: 494
Because you have assign the date of it here is the code,
$lastWensE1 = date('F j', strtotime("last tuesday"));
$lastWensS1 = strtotime ( '-6 day' , strtotime ( $lastWensE1 ) ) ;
$lastWensE2 = strtotime ( '-7 day' , strtotime ( $lastWensE1 ) ) ;
$lastWensS2 = strtotime ( '-7 day' , strtotime ( date('F j',$lastWensS1 )) ) ;
echo date('F j', $lastWensS1)." - ".$lastWensE1;
echo "<br/>";
echo date('F j', $lastWensS2)." - ".date('F j', $lastWensE2);
Upvotes: 1