Seite 1 von 1

Wenn - Dann Funktion

Verfasst: 20.02.2020, 17:29
von answer
Hallo Liebe Acronauten,

ich habe folgendes Problem!

Ich habe eine PDF Formular erstellt, dort sollen die Nutzer Ihre Arbeitszeiten eintragen.

1. Feld - Arbeitszeit Beginn
2. Feld - Arbeitszeit Ende
3. Feld - Arbeitszeit Gesamt
4. Feld - abzuziehende Pausenzeit (0:30h oder 0:45h)

Wenn als im Feld 3 (Arbeitszeit Gesamt) kleiner gleich "9:30h" steht, soll im Feld 4 "0:30h" stehen und wenn im Feld 3 gößergleich "9:31h" steht, soll im Feld 4 "0:45h" stehen.

Ich hoffe mir kann geholfen werden :)

Vielen Dank um Voraus!

Mario

Re: Wenn - Dann Funktion

Verfasst: 27.02.2020, 09:05
von answer
Hallo,

bisher habe ich folgendes und es funktioniert.

Code: Alles auswählen

var dauer = this.getField("mo-dauer").value;

dtdauer = dauer.toString();
dtdauer = dtdauer.split(":");
var dtStartH = Number(dtdauer[0]);
var dtStartM = Number(dtdauer[1]);

var zeitdauer = dtStartH * 60 + dtStartM;

var pause = this.getField("mo-pause").value;

dtpause = pause.toString();
dtpause = dtpause.split(":");
var dtStartH = Number(dtpause[0]);
var dtStartM = Number(dtpause[1]);

//Umrechnen der Minuten in Stunden
var zeitpause = dtStartH * 60 + dtStartM;

//Ausgabe der Berechneten Zeit als hh:mm
this.getField("wo-aznetto").value=((zeitdauer-zeitpause)-(zeitdauer-zeitpause)%(60))/60 +":"+ (zeitdauer-zeitpause)%(60)
Hat jemand noch Verbesserungsvorschläge?

Danke Mario

Re: Wenn - Dann Funktion

Verfasst: 27.02.2020, 11:06
von Menni
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?