需要使用PHP查找未来日期

时间:2012-01-03 06:51:11

标签: php date

我需要使用php.But使用php查找未来日期,我无法获得2月份的正确日期。我在下面发布了我的代码。我需要2月结束日期。谢谢。

<?php
$date    =    '2011-12-31';
$dateOneMonthAdded = strtotime(date("Y-m-d", strtotime($date)) . " +2 month");
$end_date=date("Y-m-d",$dateOneMonthAdded);

echo date("Y-m-d",strtotime(date("Y-m-d", strtotime($end_date))));


?>

7 个答案:

答案 0 :(得分:4)

您可以使用3月1日并减去1天:

$date = date_create('2012-03-01');
$date->modify("-1 day");
echo $date->format("Y-m-d");

答案 1 :(得分:2)

$dt = new DateTime();
$dt->setDate(2011, 12, 31);
$dt->modify('last day of +2 month');
//or
$dt->modify('+2 month -2 day');
//or
$dt->modify('next month last day of next month');
print_r ($dt);

答案 2 :(得分:2)

如果你绝对需要使用strtotime,你可以试试这个:

<?php
$date    =    '2011-12-31';
$dateOneMonthAdded = strtotime(date("Y-m-d", strtotime($date)) . ", next month, last day of next month");
$end_date=date("Y-m-d",$dateOneMonthAdded);

echo date("Y-m-d",strtotime(date("Y-m-d", strtotime($end_date))));
?>

这将返回您的期望:2012-02-29。

您也可以在PHP手册中查看relative formats的strtotime。

答案 3 :(得分:2)

试试这段代码。

<?php
$date    =    '2011-12-31';
$dateOneMonthAdded = strtotime(date("Y-m-t", strtotime($date)) . " +2 month");
$end_date=date("Y-m-t",$dateOneMonthAdded);

echo date("Y-m-d",strtotime(date("Y-m-d", strtotime($end_date))));

?>

答案 4 :(得分:1)

使用以下代码查找first/last day of a given mont h,

<?php

function findFirstAndLastDay($anyDate)
{
    //$anyDate           =    '2009-08-25';    // date format should be yyyy-mm-dd
    list($yr,$mn,$dt)    =    split('-',$anyDate);    // separate year, month and date
    $timeStamp           =    mktime(0,0,0,$mn,1,$yr);    //Create time stamp of the first day from the give date.
    $firstDay            =     date('D',$timeStamp);    //get first day of the given month
    list($y,$m,$t)       =     split('-',date('Y-m-t',$timeStamp)); //Find the last date of the month and separating it
    $lastDayTimeStamp    =    mktime(0,0,0,$m,$t,$y);//create time stamp of the last date of the give month
    $lastDay             =    date('D',$lastDayTimeStamp);// Find last day of the month
    $arrDay              =    array("$firstDay","$lastDay"); // return the result in an array format.

    return $arrDay;
}

//Usage
$dayArray=array();
$dayArray=findFirstAndLastDay('2009-02-25');
print $dayArray[0];
print $dayArray[1];
?>

答案 5 :(得分:1)

<?php
$date    =    '2011-12-31';
$tmp_date = strtotime(date("Y-m-1", strtotime($date)) . " +2 month");
$end_date=date("Y-m-t",$tmp_date);
echo date("Y-m-d",strtotime(date("Y-m-d", strtotime($end_date))));
?>

答案 6 :(得分:0)

如果你使用PHP&gt; = 5.2我强烈建议你使用新的DateTime对象。例如,如下所示:

$date = '2011-12-31';
$end_date = new DateTime($date);
$end_date->modify('last day of +2 month');
echo $end_date->format('Y-m-d');

Live Demo

使用strtotime()

$date    =    '2011-12-31';
$dateOneMonthAdded = strtotime(date("Y-m-d", strtotime($date)) . ", last day of +2 month");
echo $end_date = date("Y-m-d",$dateOneMonthAdded);