Zeitdifferenz über 24 Studnen
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;
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;
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 230624
Url: https://administrator.de/forum/zeitdifferenz-ueber-24-studnen-230624.html
Ausgedruckt am: 20.04.2025 um 11:04 Uhr
23 Kommentare
Neuester Kommentar
Hallo ngutchek, Willkommen im Forum!
Beispiel wie man es machen könnte:
Grüße Uwe
Beispiel wie man es machen könnte:
var startDate = "01.01.2014";
var startTime = "10:20";
var endDate = "02.01.2014";
var endTime = "10:25";
var dStart = new Date(startDate.substr(6,4),startDate.substr(3,2)-1,startDate.substr(0,2),startTime.substr(0,2),startTime.substr(3,2),"0");
var dEnd = new Date(endDate.substr(6,4),endDate.substr(3,2)-1,endDate.substr(0,2),endTime.substr(0,2),endTime.substr(3,2),"0");
var diffMilliseconds = Date.parse(dEnd) - Date.parse(dStart);
var diffHours = diffMilliseconds / (1000*60*60);
var diffMinutes = Math.round((diffHours % Math.floor(diffHours)) * 60);
alert ("Die Different beträgt " + Math.floor(diffHours) + " Stunden " + diffMinutes + " Minute(n)");
Zitat von @ngutschek:
Vielen Dank für die schnelle Antwort. Allerdings kriege ich den Bezug nicht auf meine Felder.
Ich habe ja keine festen Daten, sondern variierende zum Eingeben.
warum ist das ein Problem ? Einfach den Variablen die Eingabewerte aus den Feldern zuweisen ...Vielen Dank für die schnelle Antwort. Allerdings kriege ich den Bezug nicht auf meine Felder.
Ich habe ja keine festen Daten, sondern variierende zum Eingeben.
Zitat von @ngutschek:
Das habe ich getan, aber da passiert im Formular nichts. Im Ergebnis aktualisiert sich nichts automatisch.
ähmmm, ich habe jetzt deinen Code nicht übernommen, an deine Situation anpassen musst du das schon selbst.Das habe ich getan, aber da passiert im Formular nichts. Im Ergebnis aktualisiert sich nichts automatisch.
Führe den Code mal alleine aus, er gibt dann die Differenz in einer Alert-Box aus.
Hier ging es ja ums Prinzip ... den Code lesen solltest du schon mal, deinen ganzen Code habe ich ja nicht hier ...
ja das sollte man vorher unbedingt erwähnen !!! Wenn es hier um Javascript geht dachte ich natürlich erst mal an ein Browser-Fomular.
Die standen aber oben in deinem Code nicht.... hellsehen kann ich leider noch nicht 
probiers mal hiermit
probiers mal hiermit
var startDate = this.getField("Datum 1").value;
var startTime = this.getField("Uhrzeit 1").value;
var endDate = this.getField("Datum 5").value;
var endTime = this.getField("Uhrzeit 5").value;
var dStart = new Date(startDate.substr(6,4),startDate.substr(3,2)-1,startDate.substr(0,2),startTime.substr(0,2),startTime.substr(3,2),"0");
var dEnd = new Date(endDate.substr(6,4),endDate.substr(3,2)-1,endDate.substr(0,2),endTime.substr(0,2),endTime.substr(3,2),"0");
var diffMilliseconds = Date.parse(dEnd) - Date.parse(dStart);
var diffHours = diffMilliseconds / (1000*60*60);
var diffMinutes = Math.round((diffHours % Math.floor(diffHours)) * 60);
event.value = Math.floor(diffHours) + ":" + diffMinutes;
Mit der Post ...
Kommt drauf an wie ...
Kommt drauf an wie ...
Zitat von @ngutschek:
Ich sage nur AAAAnfäääänger.... Bringe mir das selber bei, aber ich kenne die ganzen Befehle noch garnicht
melde mich später nochmal, muss jetzt erst weg ....Ich sage nur AAAAnfäääänger.... Bringe mir das selber bei, aber ich kenne die ganzen Befehle noch garnicht
Zitat von @ngutschek:
Jetzt müsste ich nur noch wissen wie ich die Stunden in Tag:Stunden:Minuten umrechnen kann.
Jetzt müsste ich nur noch wissen wie ich die Stunden in Tag:Stunden:Minuten umrechnen kann.
function dhm(t){
var cd = 24 * 60 * 60 * 1000,
ch = 60 * 60 * 1000,
d = Math.floor(t / cd),
h = '0' + Math.floor( (t - d * cd) / ch),
m = '0' + Math.round( (t - d * cd - h * ch) / 60000);
return [d, h.substr(-2), m.substr(-2)].join(':');
}
var startDate = this.getField("Datum 1").value;
var startTime = this.getField("Uhrzeit 1").value;
var endDate = this.getField("Datum 5").value;
var endTime = this.getField("Uhrzeit 5").value;
if (startDate != "" && startTime != "" && endDate !="" && endTime !=""){
var dStart = new Date(startDate.substr(6,2),startDate.substr(3,2)-1,startDate.substr(0,2),startTime.substr(0,2),startTime.substr(3,2),"0");
var dEnd = new Date(endDate.substr(6,2),endDate.substr(3,2)-1,endDate.substr(0,2),endTime.substr(0,2),endTime.substr(3,2),"0");
var diffMilliseconds = Date.parse(dEnd) - Date.parse(dStart);
event.value = dhm(diffMilliseconds);
}else{
event.value = "";
}
Problem ist ja nun behoben...
Wenns das dann war, den Beitrag bitte noch auf gelöst setzen, und die Lösungskommentare markieren. Merci.
Grüße Uwe
Wenns das dann war, den Beitrag bitte noch auf gelöst setzen, und die Lösungskommentare markieren. Merci.
Grüße Uwe
Colinardo, welche Scriptsprache ist das? Und musste es diese Sprache sein? In VBScript hätte ich das Problem einfach mit DateDiff gelöst, der Code wäre glaube ich übersichtlicher gewesen.
Zitat von @Winfried-HH:
Colinardo, welche Scriptsprache ist das? Und musste es diese Sprache sein? In VBScript hätte ich das Problem
Schau dir mal die Kategorie und Kommentare an, dann wüsstest du das es hier um JavaScript in einem Acrobat-Formular geht ... und Acrobat kennt kein VBS!Colinardo, welche Scriptsprache ist das? Und musste es diese Sprache sein? In VBScript hätte ich das Problem
Sicher mit VBS und den integr. Funktionen ist das selbst für Anfänger kein Problem, aber ist nun mal im Acrobat nicht drin...
Grüße Uwe