Нужно найти будущую дату, используя PHP - PullRequest
2 голосов
/ 03 января 2012

Мне нужно найти будущую дату, используя php. Но используя php, я не могу получить правильную дату для февраля. Я разместил свой код ниже. Мне нужна дата окончания февраля.

<?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 ]

4 голосов
/ 03 января 2012

Вы можете использовать 1 марта и вычесть 1 день:

$date = date_create('2012-03-01');
$date->modify("-1 day");
echo $date->format("Y-m-d");
2 голосов
/ 03 января 2012

Попробуйте этот код.

<?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))));

?>
2 голосов
/ 03 января 2012

Если вам абсолютно необходимо использовать 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.

Вы можете посмотретьв относительные форматы для strtotime в руководстве по PHP, а также.

2 голосов
/ 03 января 2012
$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);
1 голос
/ 03 января 2012
<?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))));
?>
1 голос
/ 03 января 2012

используйте следующий код, чтобы найти первый / последний день данного месяца ч,

<?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];
?>
0 голосов
/ 11 февраля 2017

Если вы используете PHP> = 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

OR

Использовать 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);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...