为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

PHP
繁花如伊 2021-05-02 21:26:30
我正在尝试建立一个图表来显示学生的进度,仅将最后几周(星期一)显示为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。有人可以帮忙吗?谢谢。
查看完整描述

2 回答

?
慕慕森

TA贡献1856条经验 获得超17个赞

您可以使用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

在这里看到它

代码说明:

  • 首先在上周一获得。

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

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

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

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


查看完整回答
反对 回复 2021-05-14
?
鸿蒙传说

TA贡献1865条经验 获得超7个赞

$thisMonday = strtotime('this Monday');

$lastMonday = $thisMonday - 86400 * 7; //a day has 86400 seconds

$secondLastMonday = $thisMonday - 86400 * 14;

..... 等等!


查看完整回答
反对 回复 2021-05-14
  • 2 回答
  • 0 关注
  • 151 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信