我会利用 PHP斯特托时间 http://www.php.net/strtotime令人敬畏:
function x_week_range(&$start_date, &$end_date, $date) {
$ts = strtotime($date);
$start = (date('w', $ts) == 0) ? $ts : strtotime('last sunday', $ts);
$start_date = date('Y-m-d', $start);
$end_date = date('Y-m-d', strtotime('next saturday', $start));
}
根据您提供的数据进行测试,有效。不过,我不太喜欢你正在进行的整个参考工作。如果这是我的功能,我会这样:
function x_week_range($date) {
$ts = strtotime($date);
$start = (date('w', $ts) == 0) ? $ts : strtotime('last sunday', $ts);
return array(date('Y-m-d', $start),
date('Y-m-d', strtotime('next saturday', $start)));
}
并这样称呼它:
list($start_date, $end_date) = x_week_range('2009-05-10');
我不太喜欢做这样的数学题。日期很棘手,我更喜欢让 PHP 来解决。