php mktime需要一个本月前24个月的清单

时间:2013-01-30 10:33:24

标签: php

我需要一个本月前24个月的清单。 这是我的代码:

<?php
$monthbefore1  = mktime(0, 0, 0, date("m"), date("d"), date("Y"));
$monthbefore2  = mktime(0, 0, 0, date("m")-1, date("d"), date("Y"));
$monthbefore3  = mktime(0, 0, 0, date("m")-2, date("d"), date("Y"));
$monthbefore4  = mktime(0, 0, 0, date("m")-3, date("d"), date("Y"));
$monthbefore5  = mktime(0, 0, 0, date("m")-4, date("d"), date("Y"));
$monthbefore6  = mktime(0, 0, 0, date("m")-5, date("d"), date("Y"));
$monthbefore7  = mktime(0, 0, 0, date("m")-6, date("d"), date("Y"));
$monthbefore8  = mktime(0, 0, 0, date("m")-7, date("d"), date("Y"));
$monthbefore9  = mktime(0, 0, 0, date("m")-8, date("d"), date("Y"));
$monthbefore10 = mktime(0, 0, 0, date("m")-9, date("d"), date("Y"));
$monthbefore11 = mktime(0, 0, 0, date("m")-10, date("d"), date("Y"));
$monthbefore12 = mktime(0, 0, 0, date("m")-11, date("d"), date("Y"));
$monthbefore13 = mktime(0, 0, 0, date("m")-12, date("d"), date("Y"));
$monthbefore14 = mktime(0, 0, 0, date("m")-13, date("d"), date("Y"));
$monthbefore15 = mktime(0, 0, 0, date("m")-14, date("d"), date("Y"));
$monthbefore16 = mktime(0, 0, 0, date("m")-15, date("d"), date("Y"));
$monthbefore17 = mktime(0, 0, 0, date("m")-16, date("d"), date("Y"));
$monthbefore18 = mktime(0, 0, 0, date("m")-17, date("d"), date("Y"));
$monthbefore19 = mktime(0, 0, 0, date("m")-18, date("d"), date("Y"));
$monthbefore20 = mktime(0, 0, 0, date("m")-19, date("d"), date("Y"));
$monthbefore21 = mktime(0, 0, 0, date("m")-20, date("d"), date("Y"));
$monthbefore22 = mktime(0, 0, 0, date("m")-21, date("d"), date("Y"));
$monthbefore23 = mktime(0, 0, 0, date("m")-22, date("d"), date("Y"));
$monthbefore24 = mktime(0, 0, 0, date("m")-23, date("d"), date("Y"));

echo date("F", $monthbefore24);
echo date("F", $monthbefore23);
echo date("F", $monthbefore22);
echo date("F", $monthbefore21);
echo date("F", $monthbefore20);
echo date("F", $monthbefore19);
echo date("F", $monthbefore18);
echo date("F", $monthbefore17);
echo date("F", $monthbefore16);
echo date("F", $monthbefore14);
echo date("F", $monthbefore13);
echo date("F", $monthbefore12);
echo date("F", $monthbefore11);
echo date("F", $monthbefore10);
echo date("F", $monthbefore9);
echo date("F", $monthbefore8);
echo date("F", $monthbefore7);
echo date("F", $monthbefore6);
echo date("F", $monthbefore5);
echo date("F", $monthbefore4);
echo date("F", $monthbefore3);
echo date("F", $monthbefore2);
echo date("F", $monthbefore1);
?>

为什么结果看起来像这样? * MarchMarch * AprilMayJuneJulyAugustSeptemberOctoberDecemberJanuary * MarchMarch * AprilMayJuneJulyAugustSeptemberOctoberNovemberDecemberJanuary

5 个答案:

答案 0 :(得分:2)

今天是1月30日,2月没有30天,所以它增加了2天的日期,结果是3月 看一下PHP日期函数手册http://www.php.net/manual/en/function.date.php

答案 1 :(得分:1)

你最有可能获得一个重复的三月,因为你使用今天的第30天而不是所有月份都有30天。你可以使用这些

    $months = array();
    $date = mktime(0, 0, 0, date('n'), 1);
    for($i = -1; $i >= -24; $i--) {
        $months[] = date('F', strtotime($i.' month', $date));
    }
    print_r($months);

我已将结果放在数组中以方便使用,但您可以简单地回显结果:

    $date = mktime(0, 0, 0, date('n'), 1);
    for($i = -1; $i >= -24; $i--) {
        echo date('F', strtotime($i.' month', $date));
    }

第一行创建一个时间戳,该时间戳包含今天的月份和年份,但是包含该月份的第一天。第三行然后从日期中删除$ i个月,并将结果时间戳转换为月份的字符串表示。

答案 2 :(得分:0)

尝试查找日期()手册并描述您想要获得的内容。

答案 3 :(得分:0)

for ($i=-1; $i--; $i>-24)
{
      echo date("F", strtotime($i." months"));
}

答案 4 :(得分:0)

我会以不同的方式解决您的问题。我的问题是:你对今年的第0个月有什么期望?还是今年的第-1个月?查看date()的文档以找到它。

我使用PHP提供的日期计算功能。 DateTime包。

以下是一个例子:

// Get an instance of DateTime with current time (no argument)
$date = new DateTime();

// Create a DateInterval (that may be a bit confusing) by one month
$interval = new DateInterval('P1M');
# Same as: $interval = DateInterval::createFromDateString('1 month')

// What date do we have now?
echo $date->format('F');

// What date is it if we substract one month and print it?
echo $date->sub($interval)->format('F');
echo $date->sub($interval)->format('F');
echo $date->sub($interval)->format('F');
echo $date->sub($interval)->format('F');
echo $date->sub($interval)->format('F');
echo $date->sub($interval)->format('F');
echo $date->sub($interval)->format('F');
echo $date->sub($interval)->format('F');
echo $date->sub($interval)->format('F');
echo $date->sub($interval)->format('F');