我正在尝试创建一个简单的每周议程。这是我的代码:
$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天的间隔时间。
通常认为混合DateTime
和strtotime()
、date()
等是不好的,所以这里有另一个解决方案:
//这个问题不明确,所以我们将使用//变量,用于配置首选的第一个工作日$firstWeekDay="周日";$dateTime=新的dateTime();//如果今天不是第一周,那就选最后一天if($dateTime->format('l')!==$第一个工作日){$dateTime->modify("last{$firstWeekDay}");}$period=新DatePeriod($dateTime,新日期间隔("1D"),6//只需告诉PHP再创建6个日期(7-1个开始日));