Seite 1 von 3 123 LetzteLetzte
Ergebnis 1 bis 10 von 25

Thema: Werktage zu einem Datum addieren

  1. #1
    Großmeister(in) Avatar von Darkxor
    Registriert seit
    17.11.2007
    Ort
    NRW
    Beiträge
    663
    Danke
    0
    Bekam 0 mal "Danke" in 0 Postings

    Standard Werktage zu einem Datum addieren

    Hallo,
    ich möchte zu einem Datum eine bestimme Anzahl von Tagen addieren.
    Jedoch sollen nur Werktage addiert werden. (Mo-Fr).
    Das addierte Datum möchte ich anschließend ausgeben.
    Ich habe schon viel in der Doku rumgesucht und auch in Foren, finde aber
    nichts.
    Das Datumsformat ist momentan: date("d.m.Y") also 06.04.2009 für heute.

    Danke!
    Achtung: Dies ist ein alter Thread im HTML und Webmaster Forum
    Diese Diskussion ist älter als 90 Tage. Die darin enthaltenen Informationen sind möglicherweise nicht mehr aktuell. Erstelle bitte zu deiner Frage ein neues Thema im Forum !!!!!

  2. #2
    Bandit
    Gast

    Standard AW: Werktage zu einem Datum addieren

    Soweit mir bekannt ist, gibt es da keine passende Funktion, da wirst du dir wohl selber etwas zusammenschreiben müssen.

  3. #3
    Forum Guru Avatar von driver
    Registriert seit
    10.04.2006
    Alter
    34
    Beiträge
    20.729
    Danke
    0
    Bekam 0 mal "Danke" in 0 Postings

    Standard AW: Werktage zu einem Datum addieren

    ich würds so machen....

    - vom aktuellen datum den wochen tag holen (mit w)
    - tag (d) holen und tage draufzählen
    - schauen was zieldatum fürn wochentag hat
    - falls we dazwischen, 2 tage abziehen
    - prüfen ob monat gerade / ungerade oder 2 is
    - evtl monat "umbrechen"
    >> die icq-schreiberlinge bitte dies hier beachten



    1679 entdeckte Gottfried Wilhelm Leibniz das Binärsystem, bei einem Gespräch mit seiner Mutter: "Ja..., Nein..., Nein..., Nein..., Ja..., Ja..., Nein..."

  4. #4
    Großmeister(in)
    Themenstarter
    Avatar von Darkxor
    Registriert seit
    17.11.2007
    Ort
    NRW
    Beiträge
    663
    Danke
    0
    Bekam 0 mal "Danke" in 0 Postings

    Standard AW: Werktage zu einem Datum addieren

    Hallo,
    hab mir nun so ne Funktion geschrieben, aber das mit dem addieren
    von Mktime funktioniert noch nicht, da kommt irgendwas im Jahr 1930 raus.

    PHP-Code:
    function werktageAddieren($addTage)
    {
        
    $datumheute time();
        
    $tag getdate();
        if(
    $tag['wday'] > && $tag['wday'] < 6)
        {
            
    //Werktag
            
    $datumheute $datumheute mktime(0,0,0,0,$addTage,0);
        }
        else
        {
            
    //Kein Werktag
            
    if($tag['wday'] == 0)
            {
                
    //Sonntag (Time +1)
                
    $addTage $addTage +1
                
    $datumheute $datumheute mktime(0,0,0,0,$addTage,0);
                

            }
            else
            {
                
    //Samstag (Time +2)
                
    $addTage $addTage +2;
                
    $datumheute $datumheute mktime(0,0,0,0,$addTage,0);

            }
        }
        
    $datumheute date("d.m.Y",$datumheute);
        return 
    $datumheute;

    Danke

  5. #5
    Bandit
    Gast

    Standard AW: Werktage zu einem Datum addieren

    Mit einfachster Mathematik ist das zu lösen!
    PHP-Code:
    <?php

      
    function addWorkingDays($days)
      {
         
    $today date("D");
         
         
    $add 0;
         
         
    // Samstag
         
    if ($today == "Sat")
           
    $add 2;
         
    // Oder Sonntag
         
    else if ($today == "Sun")
           
    $add 1;
           
         
    $result time() + 86400 $add;
         
         for (
    $i 0$i $days$i++)
         {
            
    $result += 86400;
            
            
    // Wenn Samstag, dann 2 Tage dazurechnen
            
    if (date("D"$result) == "Sat")
              
    $result += 86400 2;
         }
         
         return 
    $result;
      }
      
      echo 
    "+3 = " date ("d.m.Y"addWorkingDays(3)) . "<br>";
      echo 
    "+5 = " date ("d.m.Y"addWorkingDays(5)) . "<br>";
      echo 
    "+10 = " date ("d.m.Y"addWorkingDays(10)) . "<br>";
      echo 
    "+22 = " date ("d.m.Y"addWorkingDays(22)) . "<br>";
    ?>
    Die Schleife könnte man auch noch optimieren, aber dazu habe ich jetzt keine Zeit/Lust
    Geändert von bandit600 (06.04.2009 um 13:13 Uhr)

  6. #6
    Großmeister(in)
    Registriert seit
    09.12.2008
    Ort
    Berlin
    Alter
    38
    Beiträge
    666
    Danke
    0
    Bekam 0 mal "Danke" in 0 Postings
    Blog-Einträge
    1

    Standard AW: Werktage zu einem Datum addieren

    edit: hoppla, war blödsinn
    "Programming today is a race between software engineers
    striving to build bigger and better idiot-proof programs,
    and the universe trying to build bigger and better idiots.
    So far, the universe is winning."
    Rick Cook

  7. #7
    Großmeister(in)
    Themenstarter
    Avatar von Darkxor
    Registriert seit
    17.11.2007
    Ort
    NRW
    Beiträge
    663
    Danke
    0
    Bekam 0 mal "Danke" in 0 Postings

    Standard AW: Werktage zu einem Datum addieren

    Erledigt hatte die Überprüfung nach der Addition des Tages nicht sondern davor.

    Hallo,
    @ brandit deine Funktion hat bei meinem Einbau nicht richtig funktioniert,
    daher habe ich meine eigene umgebaut und bei deiner logische Schritte
    abgeguckt.

    Jedoch muss da noch irgendwo ein Denkfehler bei der Berechnung sein.
    Kann vielleicht nochmal jemand drauf schaun?

    PHP-Code:
    function werktageAddieren($addTage)
    {
        
    $zeitpunkt time();
        
    $tag getdate($zeitpunkt);
        if(
    $tag['weekday'] == "Saturday")
        {
            
    $zeitpunkt $zeitpunkt 86400*2;
        }
        if(
    $tag['weekday'] == "Sunday")
        {
            
    $zeitpunkt  $zeitpunkt 86400;
        }

        
        for (
    $i 0$i $addTage$i++)
        {
            
    $tag getdate($zeitpunkt);
            
    $zeitpunkt $zeitpunkt 86400;
            
            
            if(
    $tag['weekday'] == "Saturday")
            {
                
    $zeitpunkt $zeitpunkt 86400 2;
            }

        }
        
    $zeitpunkt date("d.m.Y",$zeitpunkt);
        return 
    $zeitpunkt;

    Geändert von Darkxor (06.04.2009 um 15:33 Uhr)

  8. #8
    Bandit
    Gast

    Standard AW: Werktage zu einem Datum addieren

    Was funktioniert an meiner Version nicht?

    Diese Zeilen musst du bei dir vertauschen:
    PHP-Code:
    $tag getdate($zeitpunkt);
    $zeitpunkt $zeitpunkt 86400
    Richtig debuggen
    1. Man bemerkt, dass ein Skript nicht das tut, was es soll.
    2. Man schreibt an den Anfang des Scriptes die Zeile: error_reporting(E_ALL); und ini_set("display_errors", true);
    3. Man versucht, die Stelle die daran Schuld sein kann, schonmal einzugrenzen. Falls dies nicht geht, wird zunächst das komplette Skript als fehlerhaft angesehen.
    4. An markanten Stellen im Skript lässt man sich wichtige Variableninhalte ausgeben und ggf. auch in bedingten Anweisungen eine kurze Ausgabe machen, um zu überprüfen, welche Bedingung ausgeführt wurde (oder auch nicht).
    5. Schritt 3 wird so lange wiederholt, bis Unstimmigkeiten im Skript auffallen
    6. Damit hat man das Problem (Unstimmigkeit) gefunden und kann versuchen diese zu beheben. Hierzu dienen dann die PHP-Dokumentation und andere Quellen als Ratgeber.
    7. Lässt sich das konkrete Problem trotzdem nicht beheben, kann man in Foren um Rat fragen.
    8. Das Programm läuft und man kann die Debug-Ausgaben wieder entfernen.

  9. #9
    Großmeister(in)
    Registriert seit
    09.12.2008
    Ort
    Berlin
    Alter
    38
    Beiträge
    666
    Danke
    0
    Bekam 0 mal "Danke" in 0 Postings
    Blog-Einträge
    1

    Standard AW: Werktage zu einem Datum addieren

    Ungetestet, kommt aber mit weniger Schleifendurchläufen aus:
    PHP-Code:
    function get_enddate($start_monat$start_tag$start_jahr$dauer) {
        
    $start       mktime(0,0,0,$start_monat,$start_tag,$start_jahr);
        
    $starttag date("l",$start);
        if(
    $starttag=="Saturday") {
            
    $start += 172800;
        }
        elseif(
    $starttag=="Sunday") {
            
    $start += 86400;
        }
        
    $ende $start + ( $tage 86400 );
        do {
            
    $wochen     floor$tage );
            
    $tage         $wochen 2;
            
    $ende         += ( $tage 86400 );
        } while(
    $tage)
        
    $wochentag     date("l",$ende);
        
    $ende         += ($wochentag=="Saturday" || $wochentag=="Sunday") ? 172800 0;
        
    $enddatum     date("Y-m-d",$ende);
        return 
    $enddatum;

    Geändert von SinnlosS (06.04.2009 um 15:55 Uhr)
    "Programming today is a race between software engineers
    striving to build bigger and better idiot-proof programs,
    and the universe trying to build bigger and better idiots.
    So far, the universe is winning."
    Rick Cook

  10. #10
    Bandit
    Gast

    Standard AW: Werktage zu einem Datum addieren

    @SinnlosS
    Ich glaube nicht (ohne es getestet zu haben), dass dein Script funktioniert, denn du hängst auch auf einem Sonntag 2 Tage dran. Und wo kommt $we her?

Ähnliche Themen

  1. Bild auf HP erst ab einem bestimmten Datum ?
    Von kappilino im Forum PHP Forum - Apache - CGI - Perl - JavaScript und Co.
    Antworten: 14
    Letzter Beitrag: 04.12.2007, 21:01
  2. [Suche] Countdownscript von datum bis datum
    Von Biberlein im Forum Script-Archiv
    Antworten: 0
    Letzter Beitrag: 18.05.2007, 06:27
  3. Werktage zählen vom vorgegebenen Datum
    Von rafaelwr im Forum HTML & CSS Forum
    Antworten: 5
    Letzter Beitrag: 03.01.2007, 03:13
  4. Zahlen addieren
    Von Knüps im Forum PHP Forum - Apache - CGI - Perl - JavaScript und Co.
    Antworten: 6
    Letzter Beitrag: 16.02.2006, 16:01
  5. aktuelles Datum in einem Textfeld
    Von Andreas im Forum HTML & CSS Forum
    Antworten: 2
    Letzter Beitrag: 30.03.2005, 16:12

Stichworte

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •