Получить диапазон дат за предыдущий месяц - PullRequest
4 голосов
/ 01 января 2012

Мне нужна помощь для получения полного диапазона дат предыдущих месяцев в следующем формате: Y-m-d

Мне удалось получить полный диапазон дат «за эти месяцы», но не полный диапазон дат за «предыдущие» месяцы.

Любая помощь очень ценится!

Ответы [ 4 ]

10 голосов
/ 01 января 2012

Это правильно делает работу:

echo date('Y-m-01 - Y-m-t', strtotime('previous month'));

Вот доказательство: http://ideone.com/L82ZW

8 голосов
/ 01 января 2012
    $last_month_first_day=strtotime('first day of last month');
    $no_of_days=date('t',$last_month_first_day);
    $date_value=$last_month_first_day;
    for($i=0;$i<$no_of_days;$i++)
    {
        echo date('Y-m-d',$date_value)."<br>";
        $date_value=strtotime("+1 day",$date_value);
    }

Этот код напечатает то, что вы хотите ..

Первая дата:

echo date('Y-m-d',strtotime('first day of last month'));

Последняя дата:

echo date('Y-m-d',strtotime('last day of last month'));
2 голосов
/ 01 января 2012

Вы можете сделать что-то вроде этого:

$month = 2;
$lastday = mktime(0, 0, 0, $month+1, 0, 2012);
$firstday = mktime(0, 0, 0, $month, 1, 2012);

$end = date("Y-m-d", $lastday);
$start = date("Y-m-d", $firstday);

Последний день любого месяца может быть выражен как "0" день следующего месяца.
http://www.php.net/manual/en/function.mktime.php

0 голосов
/ 01 января 2012
// works with PHP 5.3 or later
$today = new DateTime();
$thisMonthFirstDay = $today->setDate($today->format('Y'), $today->format('m'), 1);
$previousMonthLastDay = $thisMonthFirstDay->sub(new DateInterval('P1D')); // substract 1 day

$daysInLastMonth = $previousMonthLastDay->format('d');

for($i=1; $i<=$daysInLastMonth; $i++) {
    $num = ($i < 10) ?'0'.$i :$i; // add zero in front if < 10
    echo $previousMonthLastDay->format('Y-m-') . $num. "\n";
} 
...