2016-09-23 64 views
4

嗨,功能如何采取动态星期一周

$start_date = '2015-09-21'; 
$end_Date = '2016-09-21'; 



    function getStartAndEndDate($start_date, $end_Date){ 
     $date1 = new DateTime($start_date); 
     $date2 = new DateTime($end_Date); 
     $interval = $date1->diff($date2); 


     $weeks = floor(($interval->days)/7); 
     $date_differences = array(); 
     for($i = 1; $i <= $weeks; $i++){  
      $date1->add(new DateInterval('P4D')); 
      $s_time = strtotime($start_date); 
      $week_number = date('W', $s_time); 
      $date_differences[] = $start_date." - ".$date1->format('Y-m-d')."<br>"; 
      $date1->add(new DateInterval('P3D')); 
      $start_date = $date1->format('Y-m-d'); 
      } 

      return $date_differences; 
     } 

输出是:

[0] => 2015-09-1 @@ 2015-09-05 
    [1] => 2015-09-08 @@ 2015-09-12 
    [2] => 2015-09-15 @@ 2015-09-19 
    [3] => 2015-09-22 @@ 2015-09-26 
    [4] => 2015-09-29 @@ 2015-10-03 
    [5] => 2015-10-06 @@ 2015-10-10 
    [6] => 2015-10-13 @@ 2015-10-17 
    [7] => 2015-10-20 @@ 2015-10-24 
    [8] => 2015-10-27 @@ 2015-10-31 
    [9] => 2015-11-03 @@ 2015-11-07 

在此功能中,当我开始和结束日期,它返回我的所有周开始日期和结束日期,但是当我给他开始日期恰好是星期一时,它的工作原理是完美的。当我给它一个不是在星期一但是其他几天的日子时,它只需要增加四天,并且让星期为(星期二到星期六)。 我真正想要的是如果有人输入不是星期一的日期,它应该在星期一开始。例如如果

$start_date = '2015-09-21'; 
$end_Date = '2016-09-21'; 

它返回的输出是这样的:

[0] => 2015-08-31 @@ 2015-09-04 
[1] => 2015-09-07 @@ 2015-09-11 
[2] => 2015-09-14 @@ 2015-09-18 
[3] => 2015-09-21 @@ 2015-09-25 

回答

-1
$date = new DateTime('your date'); 

$date->modify('-' . $date->format('N')+1 . 'days'); 

和打印日期中永远格式你想:)

+0

谢谢你的工作原理我 – AftabHafeez

+0

为什么复制我的答案? – danopz

0

标识要在其一天的日期是使用计算周一日期时间:

$s = new DateTime('2016-09-23'); 
$s->modify('-' . $s->format('N')+1 . 'days'); 
//2016-09-19 
echo $s->format('Y-m-d'); 
相关问题