如何将星期日作为开始日来获得周数?

时间:2013-04-17 11:46:17

标签: php datetime week-number

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

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

2 个答案:

答案 0 :(得分: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');

答案 1 :(得分:0)

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

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

这不起作用的唯一情况是它是12月31日,也是星期日。在这种情况下,答案将错误地说1.你必须检查这一点。