Zeit und Differenz Zeit berechnen

Guri

Mitglied
Hallo, ich Grüße euch,

ich will ein Projekt realiesieren seit einige Zeit, habe versucht durch Foren und Googlen zu realiesieren, kam nicht viel weiter, und hier Scuhe die Hilfe, aber bitte keine Antwort "Wie wers mit Suchen", ich bedanke mich im Voraus,

und jetzt zum meinen Projekt, sicht einfach und ich dachte auch das wird einfach, aber habe mich geirrt,
ich will berechnen lasen morgenszeit bis mittagzeit,
und dann die vergangenezeit von morgens bis jetzt,
und die verbliebenezeit bis mittags,
und wenn jetzigezeit ist zwischen morgenszeit und mittagszeit sollte ein meldung ausgeben "Jetzt ist Vormittag" wenn nicht dann "Jetzt ist Anderezeit" usw. usf. ...

1. Zum ersten Punket will ich Folgenes:
Code:
morgens = "07:00:00";
mittags = "12:00:00";
heute = "2014/08/31 "
differenz = new Date(new Date(heute+mittags) - new Date(heute+morgens)).toGMTString().split(" ")[4];
alert( "Differenz: "+differenz );

- a. Wie berechne ich ohne die variable "heute", bessergesagt wie berechne morgens bis mittags ohne datum?
- b. Warum man beim variable "heute", ein leeres zeichen sein muss, um sowas zu funzionieren?
- c. Wie bekomme die heutige datum automatisch in die schreibweise form wie variable "heute"?

Ich bedanke mich im voraus für jede Hilfe, viele Grüße Guri.
 
AFAIK kann man Date-Objekte nicht einfach subtrahieren sondern muss den Weg über getTime() gehen. Ich würde es so machen:
Code:
var jetzt = new Date();
var morgens = jetzt;
morgens.setHours(7);
morgens.setMinutes(0):
morgens.setMilliseconds(0);
var mittags = morgens;
mittags.setHours(12);
jetzt = jetzt.getTime();
morgens = morgens.getTime();
mittags = mittags.getTime()
differenz = mittags - morgens; // Differenz in Millisekunden
var vergangen = jetzt - morgens; // in Millisekunden
var verblieben = mittags - jetzt; // in Millisekunden
if (jetzt > morgens && jetzt < mittags) alert ("es ist Vormittag");

var jetzt = new Date();
var monat = jetzt.getMonth() + 1;
var tag = jetzt.getDate();
if (monat < 10) monat = "0" + monat;
if (tag < 10) tag = "0" + tag;
heuteStr = jetzt.getFullYear() + "/" + monat + "/" + tag;
Jetzt musst Du nur noch berücksichtigen, dass das Ergebnis bei vergangen und verblieben negativ sein kann.
 
Zuletzt bearbeitet:
Hallo und vielen Dank für die Hilfe,​

also dise script passt und klappt für heutige Datum.
Code:
var jetzt = new Date();
var monat = jetzt.getMonth() + 1;
var tag = jetzt.getDate();
if (monat < 10) monat = "0" + monat;
if (tag < 10) tag = "0" + tag;
heuteStr = jetzt.getFullYear() + "/" + monat + "/" + tag;

Aber dise script unter enhält ein fehler irgend wo bestimmt ein kleiner fehler,
aber es ist ein sehr gute weg, es sollte irgenwie in dise richtun klappen, ich arbeite daran,

Code:
var jetzt = new Date();
var morgens = jetzt;
morgens.setHours(7);
morgens.setMinutes(0):
morgens.setMilliseconds(0);
var mittags = morgens;
mittags.setHours(12);
jetzt = jetzt.getTime();
morgens = morgens.getTime();
mittags = mittags.getTime()
differenz = mittags - morgens; // Differenz in Millisekunden
var vergangen = jetzt - morgens; // in Millisekunden
var verblieben = mittags - jetzt; // in Millisekunden
if (jetzt > morgens && jetzt < mittags) alert ("es ist Vormittag");

als ausgabe bei differenz, vergangen und verbliebene zeit bekomme 0,
weil die 3 werten morgens, mittags und jetzt haben das selbe zahl (ergebnis),
wo daran liege habe keine ahnung,

noch mal vielen Dank für die Hilfe und vile Grüße Guri.​
 
Zuletzt bearbeitet:
Ahja, interessantes Problem. Der Grund ist, dass Javascript bei Zuweisungen mit Objekten nur die Referenz kopiert und nicht den Inhalt. Außerdem hatte ich die Sekunden vergessen. So ist es richtig:
Code:
var help = new Date();
var jetzt = help.getTime();
help.setHours(7);
help.setMinutes(0);
help.setSeconds(0);
help.setMilliseconds(0);
var morgens = help.getTime();
help.setHours(12);
var mittags = help.getTime()
var differenz = mittags - morgens; // Differenz in Millisekunden
var vergangen = jetzt - morgens; // in Millisekunden
var verblieben = mittags - jetzt; // in Millisekunden
Nichts ist so einfach, dass es nicht getestet werden müsste ;-)
 
Zuletzt bearbeitet:
Hallo und vielen vielen Dank,​
jetzt ist Perfekt, es funktioniert, bis jetzt ist alles OK,
ich versuche den nechte Schritt vom alleine zu realiezieren,
wenn ich nicht kann, dann melde ich mich wieder,
noch mal vielen viele Dank Sempervivum, viele Grüße Guri.​
 
Hallo ich Grüße euch, brauch ich wieder hilfe,​

ich habe gegooglet und fand ein script die es funktioniert in kombination mit oberen script, vieleicht gibt noch bessere, aber ich fand disem einfacher hier:

Code:
var zieldatum = new Date(2014, 11, 31); // Monat-1
var ziel = zieldatum.getTime() / 86400000;
function zeitberechnen() {
var jetzt = new Date(); // aktuelles Datum
var heute = jetzt.getTime() / 86400000;
var tage = ziel - heute;
var stunden = (tage - Math.floor(tage)) * 24;
var minuten = (stunden - Math.floor(stunden)) * 60;
var sekunden = (minuten - Math.floor(minuten)) * 60;
var timer = setTimeout("zeitberechnen();", 1000);

document.getElementById("ausgabe").innerHTML = Math.floor(tage)+" Tage "+Math.floor(stunden)+":"+Math.floor(minuten)+":"+Math.floor(sekunden);

}
zeitberechnen();
aber habe ein problem, die ich von alleine nicht lösen könnte, sieht ein kleines problem aus aber ich fand kein lösung,

ich will in ausgabe wenn stunden, minuten oder sekunden unter 10 sind, ein 0 vor hinzufügen, habe versucht bei sekunden mit dise code:

Code:
var zieldatum = new Date(2014, 11, 31); // Monat-1
var ziel = zieldatum.getTime() / 86400000;
function zeitberechnen() {
var jetzt = new Date(); // aktuelles Datum
var heute = jetzt.getTime() / 86400000;
var tage = ziel - heute;
var stunden = (tage - Math.floor(tage)) * 24;
var minuten = (stunden - Math.floor(stunden)) * 60;
var sekunden = (minuten - Math.floor(minuten)) * 60;
var timer = setTimeout("zeitberechnen();", 1000);

if (Math.floor(sekunden) < 10) {sekunden = "0" + sekunden};

document.getElementById("ausgabe").innerHTML = Math.floor(tage)+" Tage "+Math.floor(stunden)+":"+Math.floor(minuten)+":"+Math.floor(sekunden);

}
zeitberechnen();

Code:
if (Math.floor(sekunden) < 10) {sekunden = "0" + sekunden};

Also mit dise code wenn man ein 0 hinzufugen will sieht man keine veränderung, aber wenn man will ein Zahl von 1 bis 9 es funktioniert,

mine Frage ist, wie löse es oder genau gesagt wie füge ich eine 0 davor wenn ein Zahl ist unter 10,

ich bedanke mich im Voraus für jede Hilfe, viele Grüße Guri.​
 
Du wendest Math.floor() auf den erweiterten Sekundenwert an. Dabei wird der String implizit in einen Float-Wert umgewandelt und die führende Null geht verloren. Ich würde gleich am Anfang die Werte in Int umwandeln:
Code:
var stunden = (tage - Math.floor(tage)) * 24);
var minuten = (stunden - Math.floor(stunden)) * 60;
var sekunden = (minuten - Math.floor(minuten)) * 60;
var timer = setTimeout("zeitberechnen();", 1000);
stunden = Math.floor(stunden);
minuten = Math.floor(minuten);
sekunden = Math.floor(sekunden);
if (sekunden < 10) {sekunden = "0" + sekunden};

document.getElementById("ausgabe").innerHTML = Math.floor(tage)+" Tage "+stunden+":"+minuten+":"+sekunden;
 
Hallo, und vielen vielen Dank für die schnelle Hilfe, es funktioniert perfekt, Danke und viele Grüße Guri.
 

Neue Beiträge

Zurück