2012-01-01 178 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