• Das Erstellen neuer Accounts wurde ausgesetzt. Bei berechtigtem Interesse bitte Kontaktaufnahme über die üblichen Wege. Beste Grüße der Admin

[FRAGE] Zeitdifferenz über 24 Stunden

Natascha Gutsch

New member
Hallo zusammen,

ich benötige ein Script, in dem ich über mehrere Tage berechnen kann.
Ich habe vier Textfelder - Feld1: Datum/Abfahrt; Feld2: Uhrzeit/Abfahrt; Feld3: Datum/Rückkehr; Feld4: Uhrzeit/Rückkehr, am Ende habe ich dann das Feld: Zeit.

Ich habe nun eine Formel, welche mir die Stunden innerhalb eines Tages berechnet.
Allerdings benötige ich hier die Berechnung über mehrere Tage, inkl. der Berücksichtigung von Schaltjahren, evtl. auch Abzug von Feiertagen.´

Ich stehe gerade am Anfang und würde mich über Hilfe sehr freuen!!!!

Anbei nun der momentan eingesetzte Code:
Startzeit aus Feld "Uhrzeit 1" (Format "Zeit HH:MM"):
UhrzeitA1=this.getField("Uhrzeit 1").value;

Endezeit aus Feld "Uhrzeit 5" (Format "Zeit HH:MM"):
UhrzeitE1=this.getField("Uhrzeit 5").value;

Startzeit in Minuten seit 00:00h umrechnen:
var StartZeit = UhrzeitA1.substr(0,2) * 60 + UhrzeitA1.substr(3,2) * 1;

Endezeit in Minuten seit 00:00h umrechnen:
var EndeZeit = UhrzeitE1.substr(0,2) * 60 + UhrzeitE1.substr(3,2) * 1;

Zeitdifferenz in Minuten (auch tagesübergreifend):
var DiffZeit = ((EndeZeit + 24*60) - StartZeit) % (24*60);

ganze Stunden der Dauer:
var DauerH = Math.floor(DiffZeit/60);

Minutenanteil der Dauer:
var DauerM = DiffZeit - (DauerH * 60);

DauerH = "00" + DauerH;
DauerH = DauerH.substr(-2);

DauerM = "00" + DauerM;
DauerM = DauerM.substr(-2);

Ergebnis im Format "hh:mm" zusammensetzen:
event.value = DauerH + ":" + DauerM;
 
Mit den Feiertagen wird das etwas schwierig, da die sich sogar von Bundesland zu Bundesland unterscheiden.

Die Zeitdifferenz zwischen zwei beliebigen Zeitpunkten kann man auch mit nativem JS sehr leicht bestimmen:
Code:
var a = new Date(2014, 1, 21, 10, 15, 00);
var b = new Date(2014, 3, 17, 18, 12, 18);
console.log("Datum 1: " + a);
console.log("Datum 2: " + b);
console.log("Differenz: " + (b-a)/1000 + "s");

PS: Schaltjahre sind bei Zeitberechnungen das kleinste Problem...
 
Zurück
Oben