循环以生成从今天开始的最后十个星期一

我正在尝试建立一个图表来显示学生的进度,仅将最后几周(星期一)显示为m / d。这是我尝试过的:


$here = date( 'W', strtotime('this Monday'));

$then = date('W', strtotime('-70 days', strtotime('this Monday')));

    for($i = $then; $i<=$here; $i++)

    {

        $temp = date('W', strtotime($i));

        $tempa = strtotime($temp);

        $newd = date('m/d', $tempa);

        list .=",".$newd);

    }

当前的迭代为我提供了一系列的01/01。有人可以帮忙吗?谢谢。


繁花如伊
浏览 153回答 2
2回答

慕慕森

您可以使用PHP的DateTime类。<?php&nbsp;$nextMonday = new \DateTime(date('Y-m-d') . ' previous Monday');echo "<br/>" . $nextMonday->format('Y-m-d');for ($i=1 ; $i<=9 ; ++$i) {&nbsp;$nextMonday->sub(new DateInterval('P7D'));&nbsp;echo "<br/>" . $nextMonday->format('Y-m-d');}输出:2019-04-222019-04-152019-04-082019-04-012019-03-252019-03-182019-03-112019-03-042019-02-252019-02-18在这里看到它代码说明:首先在上周一获得。现在,添加1到9的循环(我们已经有最近的星期一)。在循环中,将日期减去7天(P->期间,7D-> 7天)这样一来,我们只能进入星期一,而(星期一至星期一)相差7天。它将在最后10个星期一(循环之前的1和循环之后的9)打印。

鸿蒙传说

$thisMonday = strtotime('this Monday');$lastMonday = $thisMonday - 86400 * 7; //a day has 86400 seconds$secondLastMonday = $thisMonday - 86400 * 14;..... 等等!
打开App,查看更多内容
随时随地看视频慕课网APP