2013-02-05 87 views
1

我想在PHP的日期范围内获取两周的开始日期和结束日期。在PHP日期范围内开始日期和结束日期在PHP

周开始=周日和周末=周六

IE),例如,如果日期范围是

$开始= '2013-01-01' 和
$结束='2013- 02-28'

所需的结果

开始日期 - > 2013-01-01结束日期 - > 2013-01-12
开始日期 - > 2013-01-13结束日期 - > 2013-01-26
开始日期 - > 2013-01-27结束日期 - > 2013-02-09
开始日期 - > 2013-02-10结束日期 - > 2013-02-23
开始日期 - > 2013-02-24结束日期 - > 2013年2月28日

代码

<?php 
$st = '2013-01-01'; 
$et ='2013-02-28'; 
$start_date = date('Y-m-d', strtotime($st)); 
$end_date = date('Y-m-d', strtotime($et)); 
$end_date1 = date('Y-m-d', strtotime($et. '+ 6 days')); 

$weekfrom = array(); 
$weekto = array(); 

for($date = $start_date; $date <= $end_date1; $date = date('Y-m-d', strtotime($date. ' + 14 days'))) 
{ 

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

    } 
    if($from < $to) 
    { 
    array_push($weekfrom,$from); 
    array_push($weekto,$to); 
    } 

} 
$n = count($weekfrom); 

for($i = 0;$i<$n;$i++) 
{ 
    echo "Start Date-->".$weekfrom[$i]; 
    echo " End Date -->".$weekto[$i]."\n"; 
} 


?> 

当前结果

开始日期 - > 2013-01-01结束日期 - > 2013年1月5日
开始日期 - > 2013年1月13日结束日期 - > 2013-01 -19
开始日期 - > 2013-01-27结束日期 - > 2013-02-02
开始日期 - > 2013-02-10结束日期 - > 2013-02-16
开始日期 - > 2013年2月24日结束日期 - > 2013年2月28日

DEMO

在当前结果中,开始日期是正确的。但问题在结束日期之内。帮我找到问题

+0

基于开始日期和结束日期之间的区别的模式是什么? – Develoger

回答

2

只要改变这一个...

$to = date("Y-m-d", strtotime("{$year}-W{$week}-6 + 1 week")); 

Codepad

+0

你太棒了。非常感谢你 – Nandu

+0

再次抓住你.. !! :) –

0

第一天:

if is Sunday == true 
today 
else 
strtotime('last sunday'); 

最后一天:

if is Saturday == true 
today 
else 
strtotime('next saturday'); 
相关问题