Hi Mario,
mit Zeiten zu rechnen ist leider nicht so einfach. Man muss die Zeitwerte erst in Zahlenwerte umwandeln, um dann Berechnungen anzustellen.
Du könntest es z.B. so realisieren:
2020-02-27_10h40_54.png
Alle Felder haben das Format Zeit (HH:MM).
In den Eigenschaften des Feldes "
tGesamt" fügst du bei Berechnung folgendes Script ein:
Code: Alles auswählen
var tS = this.getField("tStart").value;
var tE = this.getField("tEnd").value;
var numStartZ = startZeit();
var numEndZ = endZeit();
function startZeit(){
var sZeit = new Date(), //erzeugt ein Datum von heute, mit vorgegebener Zeit (Stunden und Minuten aus Startzeit)
sH = sZeit.setHours(tS.substring(0, 2)),
sM = sZeit.setMinutes(tS.substring(3, 5)),
sS = sZeit.setSeconds(00);
var numsZeit = Date.parse(sZeit); //gibt die Anzahl der Millisekunden seit dem 1. Januar 1970 00:00:00 UTC bis zu unserem Datum zurück
return numsZeit;
}
function endZeit(){
var eZeit = new Date(),
eH = eZeit.setHours(tE.substring(0, 2)),
eM = eZeit.setMinutes(tE.substring(3, 5)),
eS = eZeit.setSeconds(00);
var numeZeit = Date.parse(eZeit);
return numeZeit;
}
//mit den Zahlenwerten in Millisekunden können wir jetzt rechnen
var tDifferenz = (numEndZ - numStartZ);
var tDiffMin = (tDifferenz / 60000);
var tGesH = Math.floor(tDiffMin / 60);
var tGesM = (tDiffMin - (tGesH * 60));
var gesamtZeit = tGesH + ":" + tGesM;
event.value = gesamtZeit;
Für die Berechnung der Pause gibst du dem Feld "
tPause" folgendes mit:
Code: Alles auswählen
var tS = this.getField("tStart").value;
var tE = this.getField("tEnd").value;
var tP = this.getField("tPause").value;
var numStartZ = startZeit();
var numEndZ = endZeit();
function startZeit(){
var sZeit = new Date(),
sH = sZeit.setHours(tS.substring(0, 2)),
sM = sZeit.setMinutes(tS.substring(3, 5)),
sS = sZeit.setSeconds(00);
var numsZeit = Date.parse(sZeit);
return numsZeit;
}
function endZeit(){
var eZeit = new Date(),
eH = eZeit.setHours(tE.substring(0, 2)),
eM = eZeit.setMinutes(tE.substring(3, 5)),
eS = eZeit.setSeconds(00);
var numeZeit = Date.parse(eZeit);
return numeZeit;
}
var tDifferenz = (numEndZ - numStartZ);
var tDiffMin = (tDifferenz / 60000);
var tGesH = Math.floor(tDiffMin / 60);
var tGesM = (tDiffMin - (tGesH * 60));
var pausenZeit = (00 + ":" + tPause());
function tPause(){
if(tDiffMin <= 570){
return 30;
}else if(tDiffMin >= 571){
return 45;
}
}
event.value = pausenZeit;
Entspricht das in etwa dem was du haben wolltest?