Werktage berechnen

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

  • Werktage berechnen

    Hallo zusammen,

    ich hoffe ihr könnt mir hier weiterhelfen.

    Ich bin auf der Suche nach einem script mit dem ich die Werktage zwischen zwei gegebenen Datumseinträgen berechnen kann.

    Die Datumseinträge stammen aus einer Datenbank und sind im Date-Format in der MySQL-DB hinterlegt.

    Bei der Berechnung sollten ebenfalls die Feiertage berücksichtigt werden.

    Würde mich freuen wenn ihr mir hier weiterhelfen könnt.

    Code-Schnipsel wären sehr nett.

    Daba78

  • #2
    Eigene Ansätze wären ebenfalls sehr nett.

    Werktage = Anzahl Tage - 2/7 * Anzahl Tage - Feiertage
    aber das ist dir sicher nicht neu.
    Also Anzahl der Tage zwischen zwei Daten berechnen. Die Anzahl der Feiertage in diesem Zeitraum muß halb statisch (z.B. per DB) ermittelt werden, da keine PHP-Funktion die deutschen Feiertage kennt.

    Kommentar


    • #3
      Danke für deinen schnellen Post.

      Nen Script zur Berechnung der Arbeitstage habe ich zwischenzeitlich gefunden.

      PHP-Code:
      <?php
      $FromDate 
      'YYYY-MM-DD';
      $ToDate 'YYYY-MM-DD';
      function 
      count_workdays($date1,$date2){
      $firstdate strtotime($date1);
      $lastdate strtotime($date2);
      $firstday date(w,$firstdate);
      $lastday date(w,$lastdate);
      $totaldays intval(($lastdate-$firstdate)/86400)+1;

      //check for one week only
      if ($totaldays<=&& $firstday<=$lastday){
      $workdays $lastday-$firstday+1;
      //check for weekend
      if ($firstday==0){
      $workdays $workdays-1;
      }
      if (
      $lastday==6){
      $workdays $workdays-1;
      }

      }else { 
      //more than one week

      //workdays of first week
      if ($firstday==0){
      //so we don't count weekend
      $firstweek 5;
      }else {
      $firstweek 6-$firstday;
      }
      $totalfw 7-$firstday;

      //workdays of last week
      if ($lastday==6){
      //so we don't count sat, sun=0 so it won't be counted anyway
      $lastweek 5;
      }else {
      $lastweek $lastday;
      }
      $totallw $lastday+1;

      //check for any mid-weeks
      if (($totalfw+$totallw)>=$totaldays){
      $midweeks 0;
      } else { 
      //count midweeks
      $midweeks = (($totaldays-$totalfw-$totallw)/7)*5;
      }

      //total num of workdays
      $workdays $firstweek+$midweeks+$lastweek;

      }

      return (
      $workdays);
      //end funtion count_workdays()

      $date1 $FromDate;
      $date2 $ToDate;

      echo 
      "There are ".count_workdays($date1,$date2)." work days from $date1 to $date2";
      ?>
      Für die Feiertage habe ich eine Class-Dateihttp://repository.alionline.de/classes/class.andate.php gefunden in der alle Feiertage drinstehen.

      Wie kann ich die nun in das script mit einbauen.

      Kommentar


      • #4
        Werktage berechnen

        Hallo zusammen,

        ich habe schon einen anderen Thread hier im Forum aufgemacht war aber wohl scheinbar der falsche Bereich. Also probiere ich es hier noch einmal. Vielleicht könnt ihr mir ja weiterhelfen.

        Ich habe ein Script gesucht und gefunden welches die Werktage zwischen zwei gegebenen Datumseinträgen berechenet. Das Script funktioniert soweit ganz gut und ohne Probleme, doch ich benötige nun noch eine weitere Funktion in diesem Script. Ich möchte die gesetzlichen und kirchlichen Feiertage ebenfalls vom errechneten Ergebnis abziehen. Leider habe ich bislang noch nicht soviel Programmiererfahrung um das Problem selber zu lösen.

        Wäre schön wenn ihr mir helfen könnt.

        Quelltext zu meinem gefundenen Script findet ihr hier .

        MfG Daba78

        Kommentar


        • #5
          1. NICHT drängeln!
          2. KEINE crosspostings!

          *zusammenführ*
          *verschieb zu projekthilfe*
          Kissolino.com

          Kommentar


          • #6
            der code ist gar nicht schlecht.. leider gibt es ein problem.

            wenn ich z.b. folgendes berechnen lasse:

            2005-11-10 - 2005-11-09

            Richtiges Ergebnis = -1

            Ergebnis der Funktion = 5 ???


            Wieso kommt bei der funktion 5 raus anstelle von -1

            Kommentar


            • #7
              kann mir keiner helfen?

              Kommentar


              • #8
                Das Problem kann ich grad net lösen, aber ich habe ein neues Script geschrieben. Leider komme ich grad net auf meinen Server drauf, da dieser in meiner Firma läuft.

                Mein neues Script rechnet ohne Fehler solange alle Variablen zur Berechnung vorhanden sind. Desweiteren rechnet mein neues Script auch gleich die Feiertage mit raus.

                Wenn du willst kann ich dir das neue Script einstellen.

                Daba78

                Kommentar


                • #9
                  das wäre genial!! Danke im vorraus!!!

                  Kommentar


                  • #10
                    Du solltest aber auch bedenken, dass einige Feiertage Bundesland-abhängig sind - bzw. sogra nur in Teilen eines Bundeslandes gelten:
                    http://www.ferien-planer.de/feiertage-2005.html

                    Allgemein kannst du dir die meisten "beweglichen" Feiertage über Ostern als Referenzdatum berechnen lassen. Außer der Buß- u. Bettag, der richtet sich nach dem 1. Advent. Du musst dir halt nur einmalig das aktuelle (im gewünschten Jahr) Datum von Ostern herzaubern. Eine ganz gute Übersicht gibt es unter:
                    http://www.microsoft.com/germany/msd...sualBasic.mspx

                    Das ganze ist ein Beispiel für VB, ist aber ohne größere Probleme auf PHP übertragbar.
                    Simploo CMS - das einfache Webseiten-Bearbeitungsprogramm

                    Kommentar


                    • #11
                      Ja, dass stimmt schon mit den unterschiedlichen Feiertagen. Aber ich komme aus BW und wir nehmen fast jeden Feiertag mit den es so gibt.

                      Desweiteren kann man ja das script soweit umschreiben, dass es auf den jeweiligen Anwendungszweck passt.

                      Daba78

                      Kommentar


                      • #12
                        Das trifft sich gut, bin auch aus Baden-Württemberg

                        Wäre toll, wenn du mir dein anderes script hier mal posten könntest..

                        Danke

                        Kommentar


                        • #13
                          Hallo zusammen,

                          habe erst kürzlich begonnen mich intensiv mit der Feiertagsthematik zu beschäften.
                          Gefragt waren neben deutschen Feiertagsdaten (auf Bundesebene) ebenso auch jene aus der Schweiz und Österreich.
                          Nach anfänglicher Euphorie hat sich recht schnell abgezeichnet, dass es aufgrund von diversen Ausnahmen doch weitaus komplexer ist als zuerst angenommen.

                          Es steht deshalb gerade im Gespräch auf eine professionelle Lösung zurückzugreifen, welcher als Webservice Feiertagsdaten ausliefert. http://feiertagskalender-service.de

                          Warum erzähl ich euch das alles? Ich glaube, dass es recht viele Anwendungsfälle gibt, bei denen die Feiertagsauskunft eine Rolle spielt und der ein oder andere ebenso wie ich via Google auf diesen Thread stolpert.

                          Ich möchte vermeiden, dass es euch ähnlich ergeht wie mir und von Anfang an das Thema in Sachen Komplexität entsprechend einschätzt..

                          Thats it

                          Dominik
                          Zuletzt geändert von wahsaga; 27.03.2014, 08:25. Grund: Verlinkung entfernt, da Werbeposting

                          Kommentar

                          Lädt...
                          X