2012-01-01 166 views
4

我需要帮忙的前几个月完整的日期范围,格式如下:年月日获取上个月日期范围

我已经成功地能得到“这个”月满的日期范围,但不是“前一个”月满日期范围。

任何帮助,非常感谢!

回答

7
$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')); 
+0

这对我的作品,但它打印出该月的每个日期。有没有办法让它只显示“第一个”和“最后一天”,而不是中间的所有日期。例如:'2011-12-01'和'2011-12-31'? – three3 2012-01-01 19:41:43

+0

现在检查...只是第一个和最后一个日期在最简单的方式来实现.. :) – 2012-01-01 19:45:22

2

你可以做这样的事情:

$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

你在你的答案中混合的顺序:http://ideone.com/y5rK4 – Tadeck 2012-01-01 20:03:54

0
// 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"; 
} 
+0

这适用于我,但它打印出每个月份的日期。有没有办法让它只显示“第一个”和“最后一天”,而不是中间的所有日期。例如:'2011-12-01'和'2011-12-31'? – three3 2012-01-01 19:41:35

+0

是的,有一种方法可以做到这一点。 – Justus 2012-02-03 12:03:18

10

这得到正确地完成这项工作:

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

这里是证明:http://ideone.com/L82ZW