1. Diese Seite verwendet Cookies. Wenn du dich weiterhin auf dieser Seite aufhältst, akzeptierst du unseren Einsatz von Cookies. Weitere Informationen

In einem Zeitraum das höchste Datum ausgeben!

Dieses Thema im Forum "PHP" wurde erstellt von JQCan, 9. Januar 2017.

  1. JQCan

    JQCan Mitglied

    Hallo,

    ich bin seit Tagen an meinem Code Schnipsel dran und kann meine Ergebnisse nicht auswerten. Trotz google Suche.
    Erst mal mein Code:
    PHP:
    1. function dates_range($date1, $date2) {
    2.  
    3.     if (date("Y-m") === $date2) {
    4.         $date2 = date('Y-m-d');
    5.     }
    6.  
    7.     if ($date1<$date2) {
    8.            $dates_range[]=$date1;
    9.    
    10.            $date1=strtotime($date1);
    11.            $date2=strtotime($date2);
    12.      
    13.            while ($date1 != $date2) {
    14.               $date1=mktime(0, 0, 0, date("m", $date1), date("d", $date1)+1, date("Y", $date1));
    15.                $dates_range[]=date('Y-m-d', $date1);
    16.  
    17.            }
    18.    }
    19.    return $dates_range;
    20. }
    21.  
    22. $heute = date("Y-m-d);
    23. echo '<pre>';
    24.        print_r(dates_range("01-11-2016", $heute));
    25.        echo '</pre>';
    Ausgabe:
    PHP:
    1. (
    2.     [0] => 2016-11-01
    3.     [1] => 2016-11-02
    4.     [2] => 2016-11-03
    5.     [3] => 2016-11-04
    6.     [4] => 2016-11-05
    7.     [5] => 2016-11-06
    8.     [6] => 2016-11-07
    9.     [7] => 2016-11-08
    10.     [8] => 2016-11-09
    11.     [9] => 2016-11-10
    12.     [10] => 2016-11-11
    13.      ...
    14.    
    15.  [69] => 2017-01-09
    Meine Frage dazu ist, wie kann ich in dem Zeitraum 01-11-2016 bis angenommen heute nur das letzte Datum vom Monat ausgeben? Spricht: 2016-11-30, 2016-12-31 und das heute Datum z.b. 2017-01-09?

    Ich habe einige Code Beispiele ausprobiert und mal umprogrammiert, aber ich komme einfach nicht auf die passende Lösung dazu.:(

    Kann mir einer hier helfen?

    LG
    JQCan
     
  2. Yaslaw

    Yaslaw n/a Moderator

    mMn lohnt es sich, für solche Sahen auf die DateTime zu weschseln und das ganze mit DatePeriod zu lösen

    Code (PHP):
    1. //Start Datum
    2. $begin = new DateTime( '2017-08-01' );
    3. //End Datum
    4. $end = new DateTime( '2017-12-17' );
    5.  
    6. //Anfang Monat vom Startdatum ermitteln
    7. $begin->modify('first day of this month');
    8.  
    9. //Einen Clone vom Enddatum machen um damit zu rechnen
    10. $endCalc = clone($end);
    11. //Vom EndDatum einen Monat abziehen, da der EndMonat anderst behanfdelt wird
    12. $endCalc->sub(new DateInterval('P1M'));
    13.  
    14. //Eine Periode definieren mit dem Interval 1 Monat
    15. $daterange = new DatePeriod($begin, new DateInterval('P1M') ,$endCalc);
    16.  
    17. //Die Resultateder Periode auswerten
    18. foreach($daterange as $date){
    19.    //Den letzen Tag des Monats ermitteln
    20.    $date->modify('last day of this month');
    21.    //und ausgeben
    22.    echo $date->format("Ymd") . "<br>";
    23. }
    24.  
    25. //Spezialfall letzter Monat: Hier willst du das tarsächle Datum
    26. echo $end->format("Ymd") . "<br>";
    Ausgabe
    Code (Text):
    1. 20170831
    2. 20170930
    3. 20171031
    4. 20171130
    5. 20171217
     
    merzi86 gefällt das.
  3. JQCan

    JQCan Mitglied

    Danke Yaslaw!

    ich habe mal einiges angepasst. Aber komme jetzt mit dem Zeitraum suche nicht ganz klar. Da die Datei groß ist, habe ich eine Archiv.zip Datei hochgeladen.
    Was genau gemacht werden soll, ist in der php Kommentar beschrieben.

    Hoffe jemand kann mir einen Tipp geben. :(
     

    Anhänge:

  4. Yaslaw

    Yaslaw n/a Moderator

    Sorry, keine Zeit die Kommentare in deinen 6 Dateien zu suchen ohne eine Ahnung zu haben, was a) das Program überhaubt können sollte und b) was das Problem ist und c) in welcher Datei denn Zeug sich befindet.
     
Die Seite wird geladen...