Coding
PHP strtotime Bug Workaround – Part 2
Back in 2009, I noticed a minor bug in PHP 4.3.11 that caused a problem with obtaining the “last” Sunday using the strtotime function and provided a workaround fix.
However, as of PHP version 4.4.9, that fix no longer works. I didn’t really dig into why that is, but did create a function that works for that version and above as shown below.
To use, simply call get_sunday with no parameters to get the last Sunday from today. To use another day, provide $offset. $datefmt is a global variable that is the date format that is to be used to return the date of Sunday.
function get_sunday($offset = FALSE) {
global $datefmt;
if (!$offset)
$offset = strtotime(date($datefmt));
else
$offset = strtotime($offset);
if (date('w', $offset) == 0) {
$d = date($datefmt, strtotime("-1 week", $offset));
} else {
$w = "-" . (string)date('w', $offset);
$d = date($datefmt, strtotime($w . " day", $offset));
}
}