4
$date = 'some date';
$todays_week = date('W',strtotime($date));

此代码为我提供了将星期一作为一周的第一天的周数。我想获得将星期日作为一周开始日的周数。我怎么做?

4

2 回答 2

0

据我所知,没有任何选择可以更改开始日期。因此,您可以检查当前日期是否为星期日,如果是,则将周数增加 1:

function getIsoWeeksInYear($year) {
    $date = new DateTime;
    $date->setISODate($year, 53);
    return ($date->format("W") === "53" ? 53 : 52);
}

function getWeek($date) {
    $week = date('W',strtotime($date));
    $day  = date('N',strtotime($date));
    $max_weeks = getIsoWeeksInYear(date('Y',strtotime($date)));

    if($day == 7 && $week != $max_weeks) {
        return ++$week;
    } elseif($day == 7) {
        return 1;
    } else {
        return $week;
    }
}

echo getWeek('2012-12-30');
于 2013-04-17T12:04:27.270 回答
0

最优雅的解决方案是简单地在输入中添加 1 整天:

$todays_week = date('W', strtotime($date) + 60 * 60 * 24 );

这不起作用的唯一情况是它是 12 月 31 日,它也是一个星期日。在这种情况下,答案将错误地显示为 1。您必须对此进行检查。

于 2013-04-17T12:18:31.993 回答