This is because the "first Saturday" is calculated from the specified date. If the set date is already Saturday, the next is calculated.
If you need the first Saturday from a specific month, follow these steps:
$stamp = time(); $tm = localtime($stamp, TRUE); // +1 to account for the offset, +2 for "+2 month" $begin = mktime(0, 0, 0, $tm['tm_mon'] + 1 + 2, 1, 1900 + $tm['tm_year']); if (6 == $begin['tm_wday']) { // we already got the saturday $first_saturday = $stamp; } else { $first_saturday = strtotime('first saturday', $begin); }
source share