$date = 'some date';
$todays_week = date('W',strtotime($date));
此代码为我提供了将星期一作为一周的第一天的周数。我想获得将星期日作为一周开始日的周数。我怎么做?
$date = 'some date';
$todays_week = date('W',strtotime($date));
此代码为我提供了将星期一作为一周的第一天的周数。我想获得将星期日作为一周开始日的周数。我怎么做?
据我所知,没有任何选择可以更改开始日期。因此,您可以检查当前日期是否为星期日,如果是,则将周数增加 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 整天:
$todays_week = date('W', strtotime($date) + 60 * 60 * 24 );
这不起作用的唯一情况是它是 12 月 31 日,它也是一个星期日。在这种情况下,答案将错误地显示为 1。您必须对此进行检查。