edel: mit zeitangaben rechnen

hallo

ich suche eine möglichkeit mit zeitangaben zu rechnen
z.b.

12:00:00 - 1h 40 min. = 10:20:00

habe gestern hier zwar folgendes js gefunden aber dort stört mich
die tagesangabe

function fuehrendeNull(wert)
{
  if (wert<10) return "0" + parseInt(wert);
  else return parseInt(wert);
}

function Sekundenumwandeln(Sekundenzahl)
{
 Sekundenzahl = Math.abs(Sekundenzahl)
 return parseInt(Sekundenzahl/60/60/24)+ " Tage " + fuehrendeNull((Sekundenzahl/60/60)%24) + ":" +
                 fuehrendeNull((Sekundenzahl/60)%60) + ":" + fuehrendeNull(Sekundenzahl%60);
}

gibt es auch eine möglichkeit wenn ich z.b. die zeit 00:30.00 habe
und davon 2 H abziehe das ich dann auch das datum vom vortag bekomme?
kann mir da einer weiter helfen ?

  1. Wenn Du alles in Sekunden (z.B. seit 1970 - also Unix-Timestamp) umrechnest und die Sekunden wieder in ein Datum, dann geht es natürlich.

    Sandra Starck

  2. Guude!

    gibt es auch eine möglichkeit wenn ich z.b. die zeit 00:30.00 habe
    und davon 2 H abziehe das ich dann auch das datum vom vortag bekomme?

    Ja, natürlich! Solang Du ein paar Punkte berücksichtigst:

    • Gestern ist der Tag vor heute ;) -> heute -1 = gestern

    • Gestern kann aber auch ein anderer Monat gewesen sein (trifft _heute_ ja auch zu) -> wenn heute = 1.Tag eines Monats, war gestern der letzte Tag des heutigen Monats - 1.

    • Der letzte Tag des Vormonats kann der 31., der 30., der 28. oder -im Fall eines Schaltjahres (Jahreszahl % 4 = 0)- auch der 29. gewesen sein -> Array mit den letzten Tagen der jeweiligen Monate anlegen

    • Der gestrige Tag kann auch letztes Jahr gewesen sein -> wenn heutiger Tag == 1 und heutiger Monat == 1, dann aktuelles Jahr -1 = gestriges Jahr

    Das alles einfach in JS umsetzen, und Du hast Deine Lösung.
    .
    .
    .
    .
    .
    ... oder Du rechnest einfach mit dem UTC :-P http://selfhtml.teamone.de/javascript/objekte/date.htm

    LG ausm Hesseland
    Lemmy

    1. Hallo,

      Ja, natürlich! Solang Du ein paar Punkte berücksichtigst:

      Das ist alles gar nicht noetig, denn das Datumsobjekt ist flexibel genug:

      var std,min,sek,diff,datum;

      // 00:30:00
      std=0;
      min=30;
      sek=0;
      // Stundendifferenz
      diff=2;

      datum=new Date(new Date().getFullYear(),new Date().getMonth(),new Date().getDate(),std-diff,min,sek);
      alert(datum.getDate()+"."+parseInt(datum.getMonth()+1)+"."+datum.getFullYear());

      // Ergebnis heute: 28.2.2003 (=Vortag)

      MfG, Thomas

      1. Hi!

        var std,min,sek,diff,datum;

        // 00:30:00
        std=0;
        min=30;
        sek=0;
        // Stundendifferenz
        diff=2;

        datum=new Date(new Date().getFullYear(),new Date().getMonth(),new Date().getDate(),std-diff,min,sek);
        alert(datum.getDate()+"."+parseInt(datum.getMonth()+1)+"."+datum.getFullYear());

        // Ergebnis heute: 28.2.2003 (=Vortag)

        Und wenn wir etwas flexibler sein und die Zeitdifferenz nicht nur in Stunden angeben wollen, sondern
        z.B. auch mehrere Tage als Zeitdifferenz zulassen wollen:

        var BezugsZeit = new Date();   // entsprechende Parameter uebergeben, wenn nicht "jetzt" gewuenscht ist!

        var diff = 3*24*60*60*1000;    // Zeitdifferenz in Millisekunden, hier fuer 3 Tage

        var result = new Date(BezugsZeit.getTime() - diff);

        result enthaelt nun das Ergebnis als Date-Objekt. Man kann mit result.getHours() usw. die gespeicherte Zeit abfragen.

        Und damit sind wir wieder an der Stelle, die Sandra genannt hat.

        So long

        --
        Your password must be at least 18770 characters and cannot repeat any of your previous 30689 passwords.
            -- http://support.microsoft.com/default.aspx?scid=kb;en-us;Q276304