<?php
function add_weeks($weeks = 1, $base = 'now')
{
// normalise base to a unix timestamp
if (!is_string($base)) {
$base = intval($base);
} else {
$base = strtotime($base);
}
// get the date one week from the base
$result = strtotime(sprintf("@{$base} +{$weeks} weeks", $base, $weeks));
// if it falls in a different month, get the last day of the base month
if (date('n', $base) !== date('n', $result)) {
$result = strtotime("@{$base} last day of this month");
}
return $result;
}
echo date('Y-m-d', add_weeks(1)) . "\n";
echo date('Y-m-d', add_weeks(2)) . "\n";
echo date('Y-m-d', add_weeks(1, '2012-06-18')) . "\n";
echo date('Y-m-d', add_weeks(2, '2012-06-18')) . "\n";