在php中获取日期范围内的整个星期的开始日期和结束日期


Get all week start date and end date within a date range in php

如何在PHP中获取一周的开始日期和结束日期?

周开始=周日,周结束=周六

输入

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

输出

开始日期='2013-02-01'结束日期='2013-2-02'
开始日期='2013-02-03'结束日期='2013-2-09'
开始日期='2013-02-10'结束日期='2013-03-02-16'
开始日期='2013-02-17'结束日期='201302-23'
开始日期='2013-02-24'结束日期='201302-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
}

我怎样才能得到上面的结果?

试试这个。。。

$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
}  

请参阅代码板

我的答案。

$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);
}
}

我希望我答对你的问题。

你需要做的是用开始日期调用你的函数,然后在开始日期后加上七天,然后再次调用函数。。。你必须这样做,直到你到达结束日期。

以下是一些未经测试的代码:

$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);
}

希望这能有所帮助。如果您需要任何进一步的信息,请留下评论。