循环生成今天的最后十个星期一

时间:2019-04-24 09:16:32

标签: php mysql

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

byte[]

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

2 个答案:

答案 0 :(得分:4)

您可以使用PHP的DateTime类。

<?php 
$nextMonday = new \DateTime(date('Y-m-d') . ' previous Monday');
echo "<br/>" . $nextMonday->format('Y-m-d');
for ($i=1 ; $i<=9 ; ++$i) {
 $nextMonday->sub(new DateInterval('P7D'));
 echo "<br/>" . $nextMonday->format('Y-m-d');
}

输出:

2019-04-22
2019-04-15
2019-04-08
2019-04-01
2019-03-25
2019-03-18
2019-03-11
2019-03-04
2019-02-25
2019-02-18

See it live here

代码解释:

  • 首先获得上周一。

  • 现在,添加1到9的循环(我们已经有最近的星期一)。

  • 在循环中,将日期减去7天(P->期限,7D-> 7天)

  • 这样,我们只能跨到星期一,而(星期一至星期一)相差7天。

  • 它将在最近的10个星期一(循环之前的1和循环之后的9)打印。

答案 1 :(得分:0)

$thisMonday = strtotime('this Monday');
$lastMonday = $thisMonday - 86400 * 7; //a day has 86400 seconds
$secondLastMonday = $thisMonday - 86400 * 14;

... 等等!