首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >查找下一个13个星期一和最后一个星期一

查找下一个13个星期一和最后一个星期一
EN

Stack Overflow用户
提问于 2015-04-17 16:59:29
回答 6查看 584关注 0票数 18

我有下面的代码,返回从今天开始的下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

对我如何实现这个有什么想法吗?

EN

回答 6

Stack Overflow用户

回答已采纳

发布于 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 :)

票数 9
EN

Stack Overflow用户

发布于 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语句?

票数 5
EN

Stack Overflow用户

发布于 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;
}
票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/29694708

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档