我需要得到本周的每一天。
这是我到目前为止所做的,看起来很有效,但我想知道我是否能做得更好。
$weekdays = ['Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday'];
$days = [];
foreach($weekdays as $k => $v){
$days[$k] = date('Y-m-d', strtotime(''.$v.' 0 week'));
}
例如,使用\DateTime对象和修改方法:
<?php
$days = [];
$date = new DateTime();
$date->modify('this week monday');
for ($i = 0; $i < 7; $i++) {
$days[$i] = $date->format('Y-m-d');
$date->modify('+1 day');
}
在代码中,我们将日期对象设置为当前星期一,然后通过在每次迭代中将日期移动到下一天来循环7次。
此处列出了DateTime::modify支持的格式的完整列表。
您不需要带有星期几的数组。
$days = [];
for($i=0;$i<7;$i++){
$days[$i] = date('Y-m-d', strtotime("Monday this week +$i days"));
}
与DateTime:相同
$days = [];
for($i=0;$i<7;$i++){
$days[$i] = date_create("Monday this week +$i days")->format('Y-m-d');
}