2016-09-23 3 views
4

Hey Leute nehmen,Wie dynamisch Montag Woche

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

Ausgang der Funktion ist:

[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 

In dieser Funktion, wenn ich Start- und Enddatum geben, gibt sie mir alle Wochen Start und Enddatum, aber das Problem funktioniert perfekt, als ich ihm Startdatum gab, das ist genau Montag. Wenn ich ein Datum gebe, das nicht am Montag ist, sondern an einigen anderen Tagen, addiert es einfach vier Tage und macht Woche wie (Dienstag bis Samstag). Was ich genau will ist, wenn jemand ein Datum eingibt, das nicht Montag ist, sollte es seine Woche mit Montag beginnen. z.B. wenn

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

gibt es eine Ausgabe wie folgt aus:

[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 

Antwort

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

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

und das Datum gedruckt werden, in denen je Format Sie wollen :)

+0

danke es funktioniert für Ich – AftabHafeez

+0

Warum meine Antwort kopieren? – danopz

0

auf identifizieren, die Tag das Datum und berechnen Montag mit Datetime:

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