obiwan1973: Aus zwei Datumswerten die Differenz ermitteln

Hallo zusammen,

ich versuche hier, mit zwei ganz normalen JS-Datumswerten zu rechnen, also Datum2 - Datum1.

Will nicht. Als Resultat meldet die Messagebox NaN:NaN:NaN.

Ich hab' schon fleißig gegoogelt, aber die gefundenen Seiten haben mich komplett verwirrt.

Mein Code sieht so aus:

  
  
var var_time_opening;  
var var_time_closing;  
  

Die erste Funktion ermittelt die aktuelle Uhrzeit:

  
  
function funct_time()  
{  
	a = new Date();  
	//  
	b = a.getHours();  
	c = a.getMinutes();  
	d = a.getSeconds();  
	//  
	if(b < 10){b = '0'+b;}  
	if(c < 10){c = '0'+c;}  
	if(d < 10){d = '0'+d;}  
	//  
	zeit = b+':'+c+':'+d;  
	//  
	return(zeit)  
}  
  
  

In einer anderen Funktion hole ich mir den ersten Datumswert:

  
  
function funct_containershow()  
{  
	var_time_opening = funct_time();  
}  
  

In der nächsten Funktion hole ich mir den zweiten Datumswert und bilde dann die Differenz:

  
  
function funct_containercheckevent()  
{  
	var_time_closing = funct_time();  
	//  
	alert(var_time_opening + ' ' + var_time_closing);  
	//  
	b = new Date(var_time_closing - var_time_opening);  
	//  
	c = (b.getHours()-1)+'';  
	if(c.length == 1){c = '0'+c;}  
	d = (b.getMinutes())+'';  
	if(d.length == 1){d = '0'+d;}  
	e = (b.getSeconds())+'';  
	if(e.length == 1){e = '0'+e;}  
	zeit = c+':'+d+':'+e;  
	//  
	alert(zeit);  
}  
  

Der erste Alert zeigt mir nur die beiden Datumswerte an, nur für mich als Test/Kontrolle. Die Datumswerte sind i.O.

Dann bilde ich die Differenz und bekomme das Ergebnis NaN:NaN:NaN.

Wo liegt das Problem?

Könnt Ihr mir helfen?

Gruß aus Sachsenheim

Thomas

  1. Hallo obiwan1973,

    ich versuche hier, mit zwei ganz normalen JS-Datumswerten zu rechnen, also Datum2 - Datum1.

    kennst du schon http://javascript.jstruebig.de/javascript/60

    Gruß, Jürgen

    1. Om nah hoo pez nyeetz, JürgenB!

      kennst du schon http://javascript.jstruebig.de/javascript/60

      Yes! Ich bekomm dasselbe raus ;-)

      Matthias

      --
      Der Unterschied zwischen Java und JavaScript ist größer als der zwischen Tell und Teller.

    2. Hallo obiwan1973,

      ich versuche hier, mit zwei ganz normalen JS-Datumswerten zu rechnen, also Datum2 - Datum1.

      kennst du schon http://javascript.jstruebig.de/javascript/60

      Gruß, Jürgen

      Hallo Jürgen,

      das war so ziemlich die erste Seite, die mich verwirrt hat. Ich habe absolut keinen Plan, wie ich das verwenden könnte. Ich verstehe den Code gar nicht. Was macht der Autor da?

      Gruß

      TS

      1. Om nah hoo pez nyeetz, obiwan1973!

        Ich verstehe den Code gar nicht.

        Ein Datumsobjekt speichert einen sogenannten timestamp, im Falle von JavaScript, wieviele Millisekunden seit dem 1.1.1970 0:00 UTC vergangen sind.

        Die eingebenen Datumse werden also ohne dein zutun in Millisekunden seit 1.1.70 umgerechnet.

        Deshalb kannst du die Zahlen einfach subtrahieren. Dann erhältst du jedoch die Differenz in Millisekunden.

        / 1000 ⇒ Sekunden
        / 60   ⇒ Minuten
        / 60   ⇒ Stunden
        / 24   ⇒ Tage

        abs bildet den absoluten Betrag der Differenz, damit keine neagativen Zahlen herauskommen. round rundet auf ganze Zahlen, falls sich durch die internen Rundungsfehler, die entstehen können, Ergebnisse wie 3.999999999999999 oder 5.0000000000000012 ergeben.

        Matthias

        --
        Der Unterschied zwischen Java und JavaScript ist größer als der zwischen Balsa und Balsam.

        1. @@Matthias Apsel:

          nuqneH

          Ein Datumsobjekt speichert einen sogenannten timestamp, im Falle von JavaScript, wieviele Millisekunden seit dem 1.1.1970 0:00 UTC vergangen sind.

          Nicht ganz. Es liegt (gegenwärtig) 35000 Millisekunden neben (Zeit-)Spur.

          Qapla'

          --
          „Talente finden Lösungen, Genies entdecken Probleme.“ (Hans Krailsheimer)
      2. Hallo,

        http://javascript.jstruebig.de/javascript/60
        das war so ziemlich die erste Seite, die mich verwirrt hat. Ich habe absolut keinen Plan, wie ich das verwenden könnte. Ich verstehe den Code gar nicht. Was macht der Autor da?

        abgesehen davon, dass Matthias das schon sehr gut erklärt hat, finde ich es bedenklich, wenn dich das "verwirrt". Denn Struppis gezeigter Code ist eigentlich so schön klar, dass er IMO gar keinen Kommentar oder sowas braucht - man nennt das auch "selbsterklärend". :-)

        Voraussetzung ist nur, dass man Grundkenntnisse von Javascript hat und schon mal mit dem Date-Objekt hantiert hat.

        So long,
         Martin

        --
        Nein, es ist nicht wahr, dass bei der Post Beamte schneller befördert werden als Pakete.
        Selfcode: fo:) ch:{ rl:| br:< n4:( ie:| mo:| va:) de:] zu:) fl:{ ss:) ls:µ js:(