我有下面的代码,返回从今天开始的下13个星期一。
for($i=1; $i<=13; $i++){
echo date("Y-m-d", strtotime('+'.$i.' Monday'))."<br>";
}
我希望能够修改它,这样它不仅可以显示下一个13个星期一,而且可以显示刚刚过去的星期一。
我尝试修改代码,如下所示,但是我得到了下个星期一返回的两个实例。
for($i=-1; $i<=13; $i++){
echo date("Y-m-d", strtotime('+'.$i.' Monday'))."<br>";
}
返回的数据。
2015-04-13
2015-04-20 //<--
2015-04-20
2015-04-27
2015-05-04
2015-05-11
2015-05-18
2015-05-25
2015-06-01
2015-06-08
2015-06-15
2015-06-22
2015-06-29
2015-07-06
2015-07-13
对我如何实现这个有什么想法吗?
发布于 2015-04-17 17:06:42
我会这样做:
for($i =- 1; $i <= 13; $i == 0 ? $i += 2 : $i++){
echo date("Y-m-d", strtotime("$i Monday")) . "<br>";
}
使用三元运算符检查$i
是否为0-如果是,则将其增加2而不是1 :)
发布于 2015-04-17 17:03:19
试试这个:
echo date("Y-m-d", strtotime('-1 Monday'))."<br>";
for($i=1; $i<=13; $i++){
echo date("Y-m-d", strtotime('+'.$i.' Monday'))."<br>";
}
或者您只需要一条for
语句?
发布于 2015-04-17 17:07:09
function mondays() {
$begin = new DateTime('last monday');
$end = clone $begin;
$end->add(new DateInterval('P14W')); // next 13 + last
$interval = new DateInterval('P1W');
$daterange = new DatePeriod($begin, $interval ,$end);
foreach($daterange as $date){
yield $date;
}
}
foreach(mondays() as $date){
echo $date->format("Y-m-d"), PHP_EOL;
}
https://stackoverflow.com/questions/29694708
复制相似问题