php上一周基于选定日期


php previous next week based on selected date

我正在尝试创建一个简单的每周议程。这是我的代码:

$daterange = new DatePeriod(
     new DateTime('2016-04-08'),
     new DateInterval('P1D'),
     new DateTime(date('Y-m-d',strtotime ( '1 week' , strtotime ( '2016-04-08' ) )))
);

然后是一个简单的循环:

foreach ($daterange as $k => $row) {
    echo  $row->format('d') ." - " . $row->format('D') . "<br>";
}

产生类似的东西:

08 - Fri
09 - Sat
10 - Sun
11 - Mon
12 - Tue
13 - Wed
14 - Thu

这非常好,但我需要的是根据一周的第一天显示从周日或周一开始的日期。期望的结果应该是:

10 - Sun
11 - Mon
12 - Tue
13 - Wed
14 - Thu
15 - Fri
16 - Sat

您可以使用这样的东西:

date('Y-m-d', strtotime('last Monday', '2016-04-08'));

根据需要,可以将last Monday替换为next Monday/last Sunday/next Sunday。这将为您提供本周前一天/下一天的第一天。然后,您可以从该日期开始获得7天的间隔时间。

通常认为混合DateTimestrtotime()date()等是不好的,所以这里有另一个解决方案:

//这个问题不明确,所以我们将使用//变量,用于配置首选的第一个工作日$firstWeekDay="周日";$dateTime=新的dateTime();//如果今天不是第一周,那就选最后一天if($dateTime->format('l')!==$第一个工作日){$dateTime->modify("last{$firstWeekDay}");}$period=新DatePeriod($dateTime,新日期间隔("1D"),6//只需告诉PHP再创建6个日期(7-1个开始日));