Zeiträume und Zieldaten berechnen

Einklappen
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • Zeiträume und Zieldaten berechnen

    Hallo,
    kann mir jemand bei folgender Problematik helfen?

    Ich habe ein Switch Case Konstrukt welches statisch so aussieht:
    $Var ist der Wochentag des aktuellen Datums

    $var = date("w", time());
    switch($var){
    case 1:
    $ADD = 2;
    break;

    case 2:
    $ADD = 2;
    break;
    }

    Jetzt habe ich folgendes Problem: ich addiere im Normalfall die Tage aus der Variable $ADD hinzu.

    Beispiel: Zeitpunkt 1. Tag der Woche Mo 08:00 Uhr -> Zielzeitpunkt Mittwoch
    Beispiel: Zeitpunkt 3. Tag der Woche Mi 08:00 Uhr -> Zielzeitpunkt Freitag
    Beispiel: Zeitpunkt nach dem 3. Tag der Woche 09:00 Uhr -> Montag


    Wie kann ich denn sinnvoll das ausrechnen es ist immer 09:00 Uhr das Fristdatum danach müssen die Tage weiterspringen also Montag bis 09:00 Uhr -> Mittwoch, sonst Freitag wenn es bereits 10:00 Uhr ist. Und eben das entsprechende Datum ausrechnen. Dienstag hingegen ist ja rechtzeitig für Freitag. Stehe da echt auf dem Schlauch und weiß nicht wie ich das ausrechnen kann. Auch ein paar statische Werte wären kein Problem.
    Wäre für ein Beispiel echt dankbar weil ich nicht weiterkomme :-(

  • #2
    date('H')

    Kommentar


    • #3
      Du kannst das ganz gut mit Timestamps machen, würd ich sagen... hierzu mal "mktime()" und "time()" anschauen. Damit kannst du Timestamps erstellen.
      Zu was addierst du denn dazu?

      Kommentar


      • #4
        Du kannst das ganz gut mit Timestamps machen, würd ich sagen...
        Dann müsstest du für jeden Tag der nächsten X Jahre eine eigene Abfrage machen!

        Kommentar


        • #5
          Ich weiss nicht, ob ich dich richtig verstanden habe. Das Zieldatum wäre demnach immer dem Ausgangsdatum + 2 Arbeitstage folgende Zeit 9 Uhr.

          Oder gibts nur die drei Zieldaten Mittwoch, Freitag und Montag?
          Gruss
          H2O

          Kommentar


          • #6
            Original geschrieben von strauberry
            Du kannst das ganz gut mit Timestamps machen, würd ich sagen... hierzu mal "mktime()" und "time()" anschauen. Damit kannst du Timestamps erstellen.
            Zu was addierst du denn dazu?
            Zu dem jeweiligen Datum addiere ich das hinzu also entweder 2 Tage wenn es vor 09:00 Uhr ist z.B. Mittwoch oder eben mehr wenn es nach 09:00 Uhr ist.

            Mit date("H"... kann ich da leider nichts anfangen. mktime und time habe ich schon so viel probiert ich seh echt den wald vor lauter Bäumen nicht mehr.
            Normal ist es einfaches Addieren von Tagen auf ein Datum aber eben die Frage welches das Ziel ist.

            Tag, Monat und Jahr sowie aktuelle Zeit ist bekannt also time()
            Mo < 09:00 Uhr -> Mittwoch (Datum)
            Mo > 09:00 Uhr -> Freitag
            Di -> Freitag
            Mi < 09:00 Uhr -> Freitag
            Mi > 09:00 Uhr -> Montag (kommende Woche) usw......

            Kommentar


            • #7
              Was mir grad so einfällt:
              PHP-Code:
              $wdat date('wHm'$datum);
              if (
              $wdat 10900 && $wdat <= 30900){ // Mo 9:00:01 bis Mi 9:00:00
                  
              $tag 5;
              }
              elseif (
              $wdat 30900 && $wdat <= 50900){  // Mi 9:00:01 bis Fr 9:00:00
                  
              $tag 1;
              }
              else{                                 
              // Fr 9:00:01 - Mo 9:00:00
                  
              $tag 3;
              }
              $ziel get_ziel($datum$tag);

              function 
              get_ziel($datum$tag){
                  do {
                      
              $datum += 86400;    // bis zum gewünschten Tag durchzählen
                  
              }
                  while (
              date('w'$datum) != $tag);
                  list(
              $t$m$y) = explode(':'date('d:m:Y'$datum));
                  return 
              mktime(900$m$t$y);

              Möglicherweise ginge es auch einfacher. Und da du meine Frage nicht präzise beantwortet hast, bin ich auch nicht sicher, ob es das ist, was du willst
              Gruss
              H2O

              Kommentar


              • #8
                noch ein Problem

                ok Danke ich denke da kann ich mit weitermachen.

                Aber wie rechne ich denn daraus ein richtiges Datum aus?
                Ich habe dann den Tag 3 .... oder 1 und wie kommt dann da z.B. 28.05.2006 raus?

                Ich wäre dankbar wenn mir einer helfen könnte.

                Kommentar


                • #9
                  get_ziel() ist zumindest ein möglicher ansatz.

                  Kommentar

                  Lädt...
                  X