[英]How to get start and end date of months of a given range of date in php
[英]PHP Getting array with years, months and dates given a start and end date
我陷入了PHP函数中:给定开始日期(例如2011-11-25)和结束日期(例如2011-03-18),我想获得一个包含年>月>日期的数组像这样:
Array
(
[2010] => Array
(
[11] => Array
(
[0] => 25
[1] => 26
[2] => 27
[3] => 28
[4] => 29
[5] => 30
)
[12] => Array
(
[0] => 01
[1] => 02
[2] => 03
[3] => 04
[4] => 05
[5] => 06
[6] => 07
[7] => 08
[8] => 09
[9] => 10
[10] => 11
[11] => 12
[12] => 13
[13] => 14
[14] => 15
[15] => 16
[16] => 17
[17] => 18
[18] => 19
[19] => 20
[20] => 21
[21] => 22
[22] => 23
[23] => 24
[24] => 25
[25] => 26
[26] => 27
[27] => 28
[28] => 29
[29] => 30
[30] => 31
)
)
[2011] => Array
(
[01] => Array
(
[0] => 01
[1] => 02
[2] => 03
[3] => 04
[4] => 05
[5] => 06
[6] => 07
[7] => 08
[8] => 09
[9] => 10
[10] => 11
[11] => 12
[12] => 13
[13] => 14
[14] => 15
[15] => 16
[16] => 17
[17] => 18
[18] => 19
[19] => 20
[20] => 21
[21] => 22
[22] => 23
[23] => 24
[24] => 25
[25] => 26
[26] => 27
[27] => 28
[28] => 29
[29] => 30
[30] => 31
)
[02] => Array
(
[0] => 01
[1] => 02
[2] => 03
[3] => 04
[4] => 05
[5] => 06
[6] => 07
[7] => 08
[8] => 09
[9] => 10
[10] => 11
[11] => 12
[12] => 13
[13] => 14
[14] => 15
[15] => 16
[16] => 17
[17] => 18
[18] => 19
[19] => 20
[20] => 21
[21] => 22
[22] => 23
[23] => 24
[24] => 25
[25] => 26
[26] => 27
[27] => 28
)
[03] => Array
(
[0] => 01
[1] => 02
[2] => 03
[3] => 04
[4] => 05
[5] => 06
[6] => 07
[7] => 08
[8] => 09
[9] => 10
[10] => 11
[11] => 12
[12] => 13
[13] => 14
[14] => 15
[15] => 16
[16] => 17
[17] => 18
)
)
)
在谷歌搜索中,我发现了一个获取包含>年的数组的函数:
function get_months($startstring, $endstring) {
$time1 = strtotime($startstring);
$time2 = strtotime($endstring);
$year1 = date('Y', $time1);
$year2 = date('Y', $time2);
$years = range($year1, $year2);
foreach ($years as $year) {
$months[$year] = array();
while ($time1 < $time2) {
if (date('Y', $time1) == $year){
$month = date('m', $time1);
$months[$year][$month] = array();
$time1 = strtotime(date('Y-m', $time1).' +1 month');
} else {
break;
}
}
}
return $months;
}
// ----------------------------------------------------------------
foreach(array_keys($montharr) as $year){
foreach($montharr[$year] as $month){
print "{$year}-{$month}<br>";
}
}
但是我也不知道如何实施几天
请帮忙吗?
您可以使用以下功能:
<?php
function generateDates($start, $end)
{
$result = [];
while ($start <= $end) {
$result[$start->format('Y')][$start->format('m')][] = $start->format('d');
$start->add(new DateInterval('P1D'));
}
return $result;
}
$start = new DateTime('2010-11-03');
$end = new DateTime('2012-01-15');
print_r(generateDates($start, $end));
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.