2016-09-23 11 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

спасибо, что работает me – AftabHafeez

+0

Зачем копировать мой ответ? – danopz

0

Определить, в какой день дата и рассчитать понедельник с помощью DateTime:

$s = new DateTime('2016-09-23'); 
$s->modify('-' . $s->format('N')+1 . 'days'); 
//2016-09-19 
echo $s->format('Y-m-d'); 
Смежные вопросы