我想下周展示,如果它是在周四13:00之后,它应该返回+2周(下一周)。如果不是周末,这段代码可以很好地工作。它在星期五之后给出了错误的开始日期。是什么导致了这种情况?
$current_time = strtotime('now');
if ($current_time < strtotime('thursday this week 13:00')) {
$week_start = date('d/m/Y', strtotime('this week next monday', strtotime(date('d-m-Y'))));
$week_end = date('d/m/Y', strtotime('next week next sunday', strtotime(date('d-m-Y'))));
} else {
if (date('N') > 5) {
$week_start = date('d/m/Y', strtotime('+2 week next monday', strtotime(date('d-m-Y'))));
} else {
$week_start = date('d/m/Y', strtotime('next week next monday', strtotime(date('d-m-Y'))));
}
$week_end = date('d/m/Y', strtotime('+2 week next sunday', strtotime(date('d-m-Y'))));
}
return $week_start." - ".$week_end;发布于 2013-02-04 16:56:32
你的if语句有3个分支,即使你说你只是在测试周四13:00之前或之后的日期。
看起来+2 week next monday应该是next week next monday,而读取next week next monday的代码行可能从未执行过。
代码也可以像这样简化:
if ($current_time < strtotime('thursday this week 13:00')){
$week_start = strtotime('monday next week');
}else{
$week_start = strtotime('monday +1 week');
}
$week_end = strtotime('next sunday', $week_start);
return date("Y/m/d", $week_start)." - ".date("Y/m/d", $week_end); https://stackoverflow.com/questions/14682534
复制相似问题