Php 考虑到星期日是开始日,我如何获得周数?
此代码将星期一视为一周的第一天,并给出周数。我想把星期天作为一周的开始日,得到周数。我该怎么做?据我所知,没有任何选项可以更改开始日期。因此,您可以检查当前日期是否为星期日,如果是,则将周数增加1:Php 考虑到星期日是开始日,我如何获得周数?,php,datetime,week-number,Php,Datetime,Week Number,此代码将星期一视为一周的第一天,并给出周数。我想把星期天作为一周的开始日,得到周数。我该怎么做?据我所知,没有任何选项可以更改开始日期。因此,您可以检查当前日期是否为星期日,如果是,则将周数增加1: $date = 'some date'; $todays_week = date('W',strtotime($date)); 最优雅的解决方案是只需在输入中添加一整天: function getIsoWeeksInYear($year) { $date = new DateTime;
$date = 'some date';
$todays_week = date('W',strtotime($date));
最优雅的解决方案是只需在输入中添加一整天:
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');
唯一不起作用的情况是12月31日,也是周日。在这种情况下,答案将错误地说1。你得检查一下。不太清楚。请记住,ISO 8601周的编号范围为1-53(含1-53)。例如,2010年1月3日星期日是ISO 2009年,ISO第53周。谢谢你的评论:+1。我不确定上周的情况。然后改为53。不是所有ISO年都有53周。根据各种因素,周数为52周或53周。看见简言之,12月28日的测试应该会找到一年中最高的周数(52或53)。
$todays_week = date('W', strtotime($date) + 60 * 60 * 24 );