2011-07-07 22 views
2

私は現在の月の開始日と終了日を表示するために次のコードを使用しています。PHPの指定した日付範囲の月の開始日と終了日を取得する方法

function firstOfMonth() { 
return date("m/d/Y", strtotime(date('m').'/01/'.date('Y').' 00:00:00')); 
} 

function lastOfMonth() { 
return date("m/d/Y", strtotime('-1 second',strtotime('+1 month',strtotime(date('m').'/01/'.date('Y').' 00:00:00')))); 
} 

$date_start = firstOfMonth(); 
$date_end = lastOfMonth(); 
echo $date_start; 
echo $date_end; 

質問:例:について

を指定した日付の範囲内のすべての月の開始日と終了日を取得する方法

function daterange($startdate,$enddate) 
{ 
... 
... 
... 
} 

期待される結果は、開始日と終了日の配列で月の範囲は$startdate$enddateの間です

これを行う方法のヘルプを私に....

+1

何を試してみましたか?あなたに困っている何か具体的なものはありますか? – hughes

+0

あなたは '日付'を知っています。あなたは 'strtotime'を知っています。また、PHPでdaterangesを取得する方法については、何百もの質問が必要です。それで問題は何ですか? – Gordon

答えて

4
<?php 
//Function to return out start and end dates of all months in a date range given 

function rent_range($start_date, $end_date) 
{ 
    $start_date = date("m/d/Y", strtotime($start_date)); 
    $end_date = date("m/d/Y", strtotime($end_date)); 
    $start = strtotime($start_date); 
    $end = strtotime($end_date); 

    $month = $start; 
    $months[] = date('Y-m', $start); 
    while($month < $end) { 
     $month = strtotime("+1 month", $month); 
     $months[] = date('Y-m', $month); 
    } 

    foreach($months as $mon) 
    { 
     $mon_arr = explode("-", $mon); 
     $y = $mon_arr[0]; 
     $m = $mon_arr[1]; 
     $start_dates_arr[] = date("m/d/Y", strtotime($m.'/01/'.$y.' 00:00:00')); 
     $end_dates_arr[] = date("m/d/Y", strtotime('-1 minute', strtotime('+1 month',strtotime($m.'/01/'.$y.' 00:00:00')))); 
    } 

    //to remove first month in start date and add our start date as first date 
    array_shift($start_dates_arr); 
    array_pop($start_dates_arr); 
    array_unshift($start_dates_arr, $start_date); 

    //To remove last month in end date and add our end date as last date 
    array_pop($end_dates_arr); 
    array_pop($end_dates_arr); 
    array_push($end_dates_arr, $end_date); 

    $result['start_dates'] = $start_dates_arr; 
    $result['end_dates'] = $end_dates_arr; 
    return $result; 
} 

$start_date = '2011-07-29'; 
$end_date = '2012-03-31'; 
$res = rent_range($start_date, $end_date); 
echo "<pre>"; 
print_r($res); 
echo "</pre>"; 
?> 

私の上記の関数は、与えられた範囲内の日付の月の範囲表示を与える現在の時刻をピックアップします。 この関数は、インドの伝統として毎月の賃料計算に役立ちます。

それは他のいくつかのいずれかを助けるかもしれない....あなたは

1

date functionを見てください、あなたに日数を与える文字tをフォーマットするためにスクロールします。日付は常に

0
function firstAndLast($d=''){ 
    $d = $d?$d:time(); 
    $f = mktime(0,0,0,date("n",$d),1,date("Y",$d)); 
    $l = mktime(0,0,0,date("n",$d),date("t",$d),date("Y",$d)); 
    return array($f,$l); 
} 

list($first,$last) = firstAndLast(); 
echo date("d/m/Y",$first)." ($first) - ".date("d/m/Y",$last)." ($last)"; 

あなたはタイムスタンプを渡すことができますあなた次第です1 2つの日付の間の月数ためのループでこれを行うと、配列に値を格納する

:-)になります開始機能以上に、それは空白のままにし、それは

関連する問題