Philip Kirkbride
Philip Kirkbride

Reputation: 22899

Getting a list of weeks based off last Tuesday past in PHP

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

Answers (2)

Timm
Timm

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

thegrede
thegrede

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

Related Questions