php - 除日期外,将 PHP 生成的 DataPeriod 列表拆分为月和年
问题描述
所以我正在使用下面的代码生成两个日期之间所有日期的无序列表。它工作正常,但我想以一种方式打印它,它创建嵌套列表的年份和月份,然后是日期,即..
- 2019
- February
- 02-01-2019
- January
- 01-01-2019
- 01-02-2019
...
...
- 2018
...
- 2017
...
我能做些什么来轻松实现这一目标?
<?
$begin = new DateTime( '2017-03-12' );
$end = new DateTime('2019-02-15');
$interval = new DateInterval('P1D');
$daterange = new DatePeriod($begin, $interval ,$end);
$sdcheck = array();
foreach($daterange as $date){
$sdcheck[] = "<li>".$date->format("m-d-Y")."</li>";
}
?>
<ul>
<?
$sdcheck = array_reverse($sdcheck);
echo implode($sdcheck);
?>
</ul>
解决方案
我进行了一些更改以使其“更容易”。我没有反转数组的各个级别,而是对其进行了更改,以便反向生成日期周期。我还根据日期组织了带有级别的临时数组,所以现在[2019][April][]
它已经分为年和月。
然后是使用嵌套foreach
循环生成各个级别的列表的情况......
$begin = new DateTime( '2018-03-16' );
$end = new DateTime();
$interval = DateInterval::createFromDateString('-1 day');
$daterange = new DatePeriod($end, $interval ,$end->diff($begin)->days);
$sdcheck = array();
foreach($daterange as $date){
$sdcheck[$date->format("Y")][$date->format("F")][] = "<li>".$date->format("m-d-Y")."</li>";
}
$output = "<ul>";
foreach ( $sdcheck as $year=>$months ) {
$output .="<li>".$year."<ul>";
foreach ( $months as $month=>$dates ) {
$output .="<li>".$month."<ul>";
$output .=implode($dates)."</ul>".PHP_EOL;
}
$output .="</ul>";
}
$output .="</ul>";
echo $output;
推荐阅读
- html - 为背景图像速记正确格式化 ng-style
- javascript - 当我渲染除主页之外的不同路线时,html 没有加载源,express-handlebars-Node.js
- php - 具有动态生成的基本 url 的 Codeigniter 在发布表单时得到 303 See Other
- php - 如何将多个 Google 日历扩展属性与 PHP API 匹配?
- arrays - 修改 Ruby 方法以将整数分区表示为有序字符串(没有展平?)
- powershell - 编写脚本以复制特定尺寸的图像
- python - DBSCAN:输入包含 NaN、无穷大或对于 dtype('float64') 来说太大的值
- excel - Shell脚本没有读取随机之间的单行
- flutter - 我可以在没有异步功能的情况下使用 await 吗?
- laravel - 重新发送验证电子邮件时访问未声明的静态属性