0

PHPの日付範囲内ですべての週の開始日と終了日を取得する方法は?

週の始まり = 日曜日、週末 = 土曜日

入力

$start_date='2013-02-01'
$end_date = '2013-02-28'

出力

開始日='2013-02-01' 終了日='2013-02-02'
開始日='2013-02-03' 終了日='2013-02-09'
開始日='2013-02-10'終了日 ='2013-02-16'
開始日 ='2013-02-17' 終了日 ='2013-02-23'
開始日 ='2013-02-24' 終了日 ='2013-02-28'

以下のコードは、指定された日付の週の開始と終了を返します

 function getWeekDates($date)
{
    $week =  date('W', strtotime($date));
    $year =  date('Y', strtotime($date));
    $from = date("Y-m-d", strtotime("{$year}-W{$week}-1")); //Returns the date of monday in week
    $to = date("Y-m-d", strtotime("{$year}-W{$week}-7"));   //Returns the date of sunday in week
    echo "Start Date-->".$from."End Date -->".$to;//Output : Start Date-->2012-09-03 End Date-->2012-09-09
}

上記の結果を得るにはどうすればよいですか?

4

3 に答える 3

3

これを試してください...

$start_date = date('Y-m-d', strtotime('2013-02-01'));
$end_date = date('Y-m-d', strtotime('2013-02-28'));
$end_date1 = date('Y-m-d', strtotime('2013-02-28 + 6 days'));

for($date = $start_date; $date <= $end_date1; $date = date('Y-m-d', strtotime($date. ' + 7 days')))
{
    echo getWeekDates($date, $start_date, $end_date);
    echo "\n";
}

function getWeekDates($date, $start_date, $end_date)
{
    $week =  date('W', strtotime($date));
    $year =  date('Y', strtotime($date));
    $from = date("Y-m-d", strtotime("{$year}-W{$week}+1")); //Returns the date of monday in week
    if($from < $start_date) $from = $start_date;
    $to = date("Y-m-d", strtotime("{$year}-W{$week}-6"));   //Returns the date of sunday in week
    if($to > $end_date) $to = $end_date;
    echo "Start Date-->".$from."End Date -->".$to;//Output : Start Date-->2012-09-03 End Date-->2012-09-09
}  

コードパッドを参照してください。

于 2013-02-04T12:28:58.417 に答える
2

私の答え。

$start_date = '2013-02-01';
$end_date = '2013-02-28';

getWeekDates($start_date, $end_date);

function getWeekDates($date, $enddate) {
$week = date('W', strtotime($date));
$year = date('Y', strtotime($date));
$from = date("Y-m-d", strtotime("{$year}-W{$week}-1")); //Returns the date of monday in week
$to = date("Y-m-d", strtotime("{$year}-W{$week}-7"));   //Returns the date of sunday in week
$Edate = strtotime($enddate);
$Sdate = strtotime($to);
if ($Edate <= $Sdate) {
    echo "<br>Start Date-->" . $from . "End Date -->" . $enddate; //Output : Start Date-->2012-09-03 End Date-->2012-09-09

} else {
    echo "<br>Start Date-->" . $from . "End Date -->" . $to; //Output : Start Date-->2012-09-03 End Date-->2012-09-09
    $to = date("Y-m-d", strtotime("$to +1days")); //Returns the date of monday in week
    getWeekDates($to, $enddate);
}
}
于 2013-02-04T11:08:20.767 に答える
0

あなたの質問が正しいことを願っています。

あなたがする必要があるのは、開始日で関数を呼び出し、次に開始日に7日を追加して、関数を再度呼び出すことです...終了日に達するまでこれを行う必要があります。

テストされていないコードを次に示します。

$current_date = strtotime($start_date);
$end_date_as_date = strtotime($end_date);

while($current_date < $end_date_as_date){
getWeekDates($current_date);
$current_date= strtotime("+7 day", $current_date);
}

お役に立てれば。さらに情報が必要な場合は、コメントを残してください。

于 2013-02-04T10:32:06.527 に答える