繁体   English   中英

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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM