stefan: Durchschnitt an Tage

Hallo ich habe z.B. folgende Werte als Datum:

20090102
20081012
20080817
20070314

und möchte von diesen Werten nun ein Durchnittlicher Tageswert errechnen. Wie könnte ich das machen?

Viele Grüße
Stefan

  1. Hi!

    und möchte von diesen Werten nun ein Durchnittlicher Tageswert errechnen. Wie könnte ich das machen?

    ?

    Du moechtest ein durchschnittliches Datum errechnen?! So frei nach dem Motto am 1.1.2009, 15.8.2008,und am 5.4.2007 hatte ich Schluckauf, also hatte ich im Durchschnitt am 7.4.2008 Schluckauf?!

    --
    "Die Diebesgilde beklagte sich darueber, dass Mumm in aller Oeffentlichkeit behauptet hatte, hinter den meisten Diebstaehlen steckten Diebe."
          - T. Pratchett
    1. Du moechtest ein durchschnittliches Datum errechnen?! So frei nach dem Motto am 1.1.2009, 15.8.2008,und am 5.4.2007 hatte ich Schluckauf, also hatte ich im Durchschnitt am 7.4.2008 Schluckauf?!

      Nein z.B. seit 5.4.2007 im Durchschnitt alle 56 tage Schluckauf.

  2. Hallo stefan,

    kennst du http://de.selfhtml.org/javascript/objekte/date.htm? Über http://de.selfhtml.org/javascript/objekte/date.htm#get_time kannst du Zeitdifferenzen in Sekunden berechnen und daraus dann die Tage.

    Gruß, Jürgen

    1. Hallo stefan,

      kennst du http://de.selfhtml.org/javascript/objekte/date.htm? Über http://de.selfhtml.org/javascript/objekte/date.htm#get_time kannst du Zeitdifferenzen in Sekunden berechnen und daraus dann die Tage.

      Gruß, Jürgen

      könnte es so klappen?

      function Datumssumme(rDate) {
      count=Math.floor((rDate.getTime())/1000)*-1;
      count=Math.floor(count/60);
      count=Math.floor(count/60);
      count=Math.floor(count/24);
      var days=count+1 //+1, um den Tag des "Geschehens" mitzurechnen

      return days;
      }

      durchTag += Datumssumme(rDate)/Anzahl der Jahre;
      ...

      1. Hallo stefan,

        könnte es so klappen?

        function Datumssumme(rDate) {
        count=Math.floor((rDate.getTime())/1000)*-1;
        count=Math.floor(count/60);
        count=Math.floor(count/60);
        count=Math.floor(count/24);
        var days=count+1 //+1, um den Tag des "Geschehens" mitzurechnen

        return days;
        }

        durchTag += Datumssumme(rDate)/Anzahl der Jahre;

        keine Ahnung. Ich weiß weder was du berechnen willst, noch was "durchtag" und "rDate" sein sollen.

        Wenn du die Tage zwischen zwei Datumswerten ermitteln willst, benötigst du die Differenz von getTime von beiden.

        Gruß, Jürgen

        1. Hallo stefan,

          könnte es so klappen?

          function Datumssumme(rDate) {
          count=Math.floor((rDate.getTime())/1000)*-1;
          count=Math.floor(count/60);
          count=Math.floor(count/60);
          count=Math.floor(count/24);
          var days=count+1 //+1, um den Tag des "Geschehens" mitzurechnen

          return days;
          }

          durchTag += Datumssumme(rDate)/Anzahl der Jahre;

          keine Ahnung. Ich weiß weder was du berechnen willst, noch was "durchtag" und "rDate" sein sollen.

          Wenn du die Tage zwischen zwei Datumswerten ermitteln willst, benötigst du die Differenz von getTime von beiden.

          Gruß, Jürgen

          rdate = alle in einer Schleife übergebenen Datumswerte (z.B. 20090102, 20080809, 20080712)

          in durchtag sollen nun alle Sekundenwerte addiert werden geteilt durch die Anzahl der Datumswerte (hier 3).

          Danach soll der durchtag nun in Tage umgerechnet werden.

          1. Hallo stefan,

            rdate = alle in einer Schleife übergebenen Datumswerte (z.B. 20090102, 20080809, 20080712)

            mit diesem Format kann Date nichts anfangen. Das müsstest du z.B. in 2009,1,1 umwandeln, also Jahr,Monat,Tag.

            Ein Rechenbeispiel:

            diff = (new Date(2009,11,1).getTime() - new Date(2009,0,1).getTime())/(1000*60*60*24)

            Beachte, dass Monate von 0 bis 11 gehen.

            Gruß, Jürgen

            1. Hallo stefan,

              rdate = alle in einer Schleife übergebenen Datumswerte (z.B. 20090102, 20080809, 20080712)

              mit diesem Format kann Date nichts anfangen. Das müsstest du z.B. in 2009,1,1 umwandeln, also Jahr,Monat,Tag.

              Ein Rechenbeispiel:

              diff = (new Date(2009,11,1).getTime() - new Date(2009,0,1).getTime())/(1000*60*60*24)

              Beachte, dass Monate von 0 bis 11 gehen.

              Gruß, Jürgen

              und wie kann ich das nun in einer schleife ausdrücken ?

              wenn ich verschiede Werte von Datumsdaten habe?

              key1 = 20081212, 20081114, 20081019
              key2 = 20081212, 20081114, 20081019, 20071212, 20071017
              key3 = ......
              .....

              Diese Funktion habe ich schon erstellt aber es klappt noch nicht.

              function Datumssumme(rDate) {

              var jahr   = parseInt(rDate.substring(0,4));
                var monat  = parseInt(rDate.substring(4,6));
                var tag    = parseInt(rDate.substring(6,8));

              //var diff = (new Date(jahr,monat,tag).getTime() - new Date(jahr,monat,tag).getTime())/(1000*60*60*24);
               var diff = new Date(jahr,monat,tag).getTime()/(1000*60*60*24);

              return diff;
              }

              1. Hallo stefan,

                und wie kann ich das nun in einer schleife ausdrücken ?

                hier ein ungetestetes Beispiel:

                var Werte = new Array(1,3,4,7,8,10)  
                var start = Werte[0];  
                var diff = 0;  
                for(i=1;i<Werte.length;i++} {  
                  var ende = Werte[i];  
                  diff += ende - start; // Differenz zwischen dem i-ten und dem (i-1)ten Wert  
                  start = ende;  
                }  
                var mit_diff = diff / Werte.length;  
                
                

                wenn ich verschiede Werte von Datumsdaten habe?

                key1 = 20081212, 20081114, 20081019
                key2 = 20081212, 20081114, 20081019, 20071212, 20071017
                key3 = ......
                .....

                die kannst du mit split beim "," zerlegen, dann hast du ein Array mit Datumsdaten.

                Diese Funktion habe ich schon erstellt aber es klappt noch nicht.

                was klappt nicht?

                function Datumssumme(rDate) {

                var jahr   = parseInt(rDate.substring(0,4));
                  var monat  = parseInt(rDate.substring(4,6));
                  var tag    = parseInt(rDate.substring(6,8));

                //var diff = (new Date(jahr,monat,tag).getTime() - new Date(jahr,monat,tag).getTime())/(1000*60*60*24);
                var diff = new Date(jahr,monat,tag).getTime()/(1000*60*60*24);

                return diff;
                }

                wenn ich mich nicht irre, rechnest du da die Tage seit dem 1.1.1970 aus, nicht aber die Differenztage zwischen zwei Tagen.

                Gruß, Jürgen