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

标签 php mysql

我正在尝试构建一个图表来显示学生的进步,仅将最后几周(星期一)显示为 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。 有人可以帮忙吗? 谢谢。

最佳答案

您可以使用 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 -> Period,7D -> 7 Days)

  • 这样,我们就可以只跳转到星期一,并且(星期一到星期一)相差 7 天。

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

关于php - 循环生成从今天开始的最后十个星期一,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55826509/

相关文章:

php - 在mysql while函数中指定序列号

php - 试图找到在 Joomla 2.5 组件中提取数据库项目的最佳方法

如果字段不相等,Mysql 查询会得到结果

mysql - # 1248. 每个派生表必须有自己的别名

mysql - 在 PhpMyadmin MySQL 中创建一个 UUID 字段

mysql - 两个查询的 SQL 集成

javascript - 从 Javascript Date.now 到 PHP 日期

php - 基于邮政编码匹配最近的注册商店的系统设计?

python - Django-Admin 面板不会显示通过 phpmyadmin 插入的记录?

php - 我的代码有什么问题( future 支付服务器端集成)