我正在尝试使用星期日作为开始日期和引用日期(例如 $date
)来获取周范围,但我似乎无法弄清楚。
例如,如果 $date 为 2009-05-01,我将得到 2009-04-26 和 2009-05-02。 2009-05-10 将产生 2009-05-10 和 2009-05-16。我当前的代码如下所示(我不记得我是从哪里提取它的,因为我忘记在评论中写下 url):
function x_week_range(&$start_date, &$end_date, $date)
{
$start_date = '';
$end_date = '';
$week = date('W', strtotime($date));
$week = $week;
$start_date = $date;
$i = 0;
while(date('W', strtotime("-$i day")) >= $week) {
$start_date = date('Y-m-d', strtotime("-$i day"));
$i++;
}
list($yr, $mo, $da) = explode('-', $start_date);
$end_date = date('Y-m-d', mktime(0, 0, 0, $mo, $da + 6, $yr));
}
我意识到它所做的只是将当前日期增加 7 天。你会怎么做?
最佳答案
我会利用 PHP 的 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 来解决。
关于php - 在 PHP 中获取给定一周的开始和结束天数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/923925/