Zeiten addieren

Fragen & Antworten zur Steuerung von 3D Inhalten in PDFs über JavaScript
Antworten
Nutzer
Beiträge: 4
Registriert: 15.02.2024, 23:40

Zeiten addieren

Beitrag von Nutzer » 16.02.2024, 00:03

Hallo Forengemeinde,

ich bin neu hier und habe auch schon die Forensuche bedient, komme aber mit meinem Problem nicht weiter. Ich habe eine pdf-Datei als Formular erstellt, in der ich zwei Felder habe, in der Zeiten eingetragen werden sollen. In einem dritten Feld soll die Summe dieser Zeiten ausgegeben werden, wobei hier nicht nur 24 Stunden möglich sind und der Tag anschließend neu anfängt, sondern die Gesamtstunden bzw. -minuten interessant sind.
JS-Erfahrung ist bei mir gen Null. Vieles habe ich mir im Internet zusammengesucht, aber auch ChatGPT habe ich zur Unterstützung genommen.
Ich komme aber einfach nicht mit meinem Problem weiter.
Den folgenden Code habe ich bei "Eigenschaften" - "Berechnung" unter "Benutzerdefiniertes Berechnungsskript" eingegeben, allerdings bekomme ich im Feld 3 einfach kein Ergebnis raus. Ich habe das Dokument mal auf das wesentliche reduziert und füge es hier mit bei.

Vielen Dank auch schon im Voraus für die Unterstützung.

Schöne Grüße

Daniel

Code: Alles auswählen

// Funktion, um zwei Zeiten im Format "HH:mm" zu addieren und das Ergebnis zu überprüfen
function addTimeFields() {
  var sportField = this.getField("Feld_1");
  var ausbildungField = this.getField("Feld_2");
  var gesamtField = this.getField("Feld_3");
console.log()
  var sportValue = sportField.value;
  var ausbildungValue = ausbildungField.value;

  // Parse der Zeiten in Stunden und Minuten
  var sportParts = sportValue.split(":");
  var ausbildungParts = ausbildungValue.split(":");

  var sportHours = parseInt(sportParts[0], 10);
  var sportMinutes = parseInt(sportParts[1], 10);

  var ausbildungHours = parseInt(ausbildungParts[0], 10);
  var ausbildungMinutes = parseInt(ausbildungParts[1], 10);

  // Addieren der Stunden und Minuten
  var totalHours = sportHours + ausbildungHours;
  var totalMinutes = sportMinutes + ausbildungMinutes;

  // Überprüfen, ob Minuten größer als 60 sind
  if (totalMinutes >= 60) {
    totalHours += Math.floor(totalMinutes / 60);
    totalMinutes = totalMinutes % 60;
  }

  // Formatieren der Ergebniszeit
  var result = (totalHours < 10 ? "0" : "") + totalHours + ":" + (totalMinutes < 10 ? "0" : "") + totalMinutes;

  // Setzen des Ergebnisses im "Feld_3" Feld
  gesamtField.value = result;


  // Überprüfen, ob das Ergebnis unter 50:00 liegt und das Feld rot hervorheben
  if (totalHours < 50) {
    gesamtField.fillColor = color.red;
  } else {
    gesamtField.fillColor = color.transparent; // Zurücksetzen der Hervorhebung
  }
}

// Funktion aufrufen, wenn die Felder geändert werden
this.getField("Feld_1").onChange = addTimeFields;
this.getField("Feld_2").onChange = addTimeFields;
Du hast keine ausreichende Berechtigung, um die Dateianhänge dieses Beitrags anzusehen.

Benutzeravatar
bds-oldie
Beiträge: 154
Registriert: 21.02.2019, 10:37

Re: Zeiten addieren

Beitrag von bds-oldie » 08.05.2024, 17:41

Hallo Nutzer,
hier ein Beispiel mit zwei Lösungen. Die ergänzte Lösung stamm aus einem älteren Post.
Mit freundlichen Grüßen
BDS-Oldie
Forum_Rev01-ergänzt.pdf
Du hast keine ausreichende Berechtigung, um die Dateianhänge dieses Beitrags anzusehen.

Nutzer
Beiträge: 4
Registriert: 15.02.2024, 23:40

Re: Zeiten addieren

Beitrag von Nutzer » 27.05.2024, 21:43

Hallo bds-oldie,

vielen Dank für deine Unterstützung und dein ergänztes Formular.
Leider kann ich deine Programmierung noch nicht ganz für mich bzw. mein Formular reproduzieren, da es in meinem Formular nicht um Tageszeiten sondern um geleistete Stunden geht.
In meinem Beispiel sollen die Stunden aus dem Freizeitbereich mit denen aus der Ausbildungsbereich addiert werden und im Gesamtsummenfeld angezeigt werden.

Beispiel:
Bereich 1 (Feld 1) sind 12:30 (12 Stunden, 30 Minuten) und Bereich 2 (Feld 2) sind 13:44 (13 Stunden, 44 Minuten). Hieraus soll die Gesamtsumme aus Feld 1 und Feld 2 (demnach 26:14) in Feld 3 abgebildet werden.
Ein Datum ist für mich nicht relevant, da es sich hierbei eben nicht um Uhrzeiten handelt.

Kannst du mir hierbei auch helfen?
Vielen Dank im Voraus

Antworten