I'm trying to use PHP to create a script that searches all the days between now and one year's time and lists all the dates for Fridays and Saturdays. I was trying to use PHP's date() and mktime() functions but can't think of a way of doing this. Is it possible?
Thanks, Ben
Here's how to do it in a cool way, with special thanks to strtotime
's relative formats.
$friday = strtotime('Next Friday', time());
$saturday = strtotime('Next Saturday', time());
$friday = strtotime('+1 Week', $friday);
$saturday = strtotime('+1 Week', $saturday);
Of course you should tweak it to do exactly what you want, but that's beside the point I was trying to make.
Also note that strtotime
will give you timestamps. To find out the date use:
date('Y-m-d', $friday)
Another thing to know is that Next <dayofweek>
will exclude your current day from the search, so if you also want to include the current day you can do it like this:
$friday = strtotime('Next Friday', strtotime('-1 Day', time()));
And here's a full working script that does exactly what you wanted.
<?php
// prevent multiple calls by retrieving time once //
$now = time();
$aYearLater = strtotime('+1 Year', $now);
// fill this with dates //
$allDates = Array();
// init with next friday and saturday //
$friday = strtotime('Next Friday', strtotime('-1 Day', $now));
$saturday = strtotime('Next Saturday', strtotime('-1 Day', $now));
// keep adding days untill a year has passed //
while(1){
if($friday > $aYearLater)
break 1;
$allDates[] = date('Y-m-d', $friday);
if($saturday > $aYearLater)
break 1;
$allDates[] = date('Y-m-d', $saturday);
$friday = strtotime('+1 Week', $friday);
$saturday = strtotime('+1 Week', $saturday);
}
//XXX: debug
var_dump($allDates);
?>
Good luck, Alin
With DateTime objects:
<?php
define('FRIDAY', 5);
define('SATURDAY', 6);
$from = new DateTime;
$to = new DateTime('+1 year');
for($date=clone $from; $date<$to; $date->modify('+1 day')){
switch($date->format('w')){
case FRIDAY:
case SATURDAY:
echo $date->format('r') . PHP_EOL;
}
}
Update: I've added the $date=clone $from
part to remark that objects in PHP/5 are no longer copied with the =
operator but referenced.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With