Javascript - Rechnen mit ungerade Zahlen

Antworten
mumpel23
Chipsocampa
Beiträge: 208
Registriert: Mo 17. Jan 2022, 22:18
Wohnort: Lindau
Interessen: Alles außer Sellerie
Berufliche Tätigkeit: Betriebs- und Verkehrseisenbahner
Betriebssysteme & Version: Windwos 10 und 11
Kontaktdaten:

Javascript - Rechnen mit ungerade Zahlen

Beitrag von mumpel23 »

Hallo!

Code: Alles auswählen

var dtStart = this.getField("Text1").value;
var dtEnde = this.getField("Text2").value;
dtStart = dtStart.toString();
dtStart = dtStart.split(":");
var dtStartH = Number(dtStart[0]);
var dtStartM = Number(dtStart[1]);
dtEnde = dtEnde.toString();
var dtEnde = dtEnde.split(":");
var dtEndeH = Number(dtEnde[0]);
var dtEndeM = Number(dtEnde[1]);
var zeitStart = dtStartH * 60 + dtStartM;
var zeitEnde = dtEndeH * 60 + dtEndeM;
var zeitDiff = (zeitEnde - zeitStart)/2;
var minuten = zeitDiff % 60;
var stunden = (zeitDiff-minuten) / 60;
var minutenausdruck = minuten;
if (minuten < 10) {
minutenausdruck = "0"+minuten;
}
this.getField("Text7").value = stunden + ":" + minutenausdruck
Es sollen Uhrzeiten subtrahiert und durch 2 geteilt werden. Obiger Code kommt der Code nicht mit ungeraden Minuten zurecht, Adobe gibt dann eine Fehlermeldung aus ("Der angegebene Wert stimmt nicht mit dem Format des Feldes überein"). Ich vermute mal, dass die Fehlermeldung durch die Zeile "var zeitDiff = (zeitEnde - zeitStart)/2;" erzeugt wird. Gibt es eine Lösung? Oder hat jemand einen besseren Code zum Subtrahieren von Uhrzeiten? Der Code soll in Adobe-Formularen zum Einsatz kommen. Und wenn "Beginn" und "Ende" leer sind soll keine Berechnung erfolgen ("00:00" anzeigen). Danke!

Gruß, René
mumpel23
Chipsocampa
Beiträge: 208
Registriert: Mo 17. Jan 2022, 22:18
Wohnort: Lindau
Interessen: Alles außer Sellerie
Berufliche Tätigkeit: Betriebs- und Verkehrseisenbahner
Betriebssysteme & Version: Windwos 10 und 11
Kontaktdaten:

Re: Javascript - Rechnen mit ungerade Zahlen

Beitrag von mumpel23 »

Keiner? Wo sind die JS-Spezialisten aus dem Chip-Forum. ;)
neanderix
Chipsocampa
Beiträge: 575
Registriert: Di 19. Apr 2022, 20:15
Wohnort: Velbert
Interessen: Modellbau,. BBQ, Synthesizer
Berufliche Tätigkeit: Kaufm. Angestellter
Mein technisches Equipment: Tuxedo-'PC AMD Ryzen 7 3800, 32GiB RAM, 1TB SSD, 4TB HDD, EPSON Workforce WF-3640 MFP
Betriebssysteme & Version: Kubuntu 20.04 Focal Fossa
Kaffee, Tee, Kakao, oder?: Tee (grün und schwarz)
Chips?: FunnyFrisch Peperoni

Re: Javascript - Rechnen mit ungerade Zahlen

Beitrag von neanderix »

mumpel23 hat geschrieben: Di 20. Sep 2022, 01:10 Es sollen Uhrzeiten subtrahiert und durch 2 geteilt werden. Obiger Code kommt der Code nicht mit ungeraden Minuten zurecht, Adobe gibt dann eine Fehlermeldung aus ("Der angegebene Wert stimmt nicht mit dem Format des Feldes überein"). Ich vermute mal, dass die Fehlermeldung durch die Zeile "var zeitDiff = (zeitEnde - zeitStart)/2;" erzeugt wird.
Eher nicht. Wenn die Meldung tatsächlich von Adobe kommt, dann kann diese Zeile nicht der Fehler sein, denn Adobe kennt diese Zeile nicht.
Mein Verdacht ist eher, dass es sich hier um ein Typenproblem handelt, der Fehler also eher hier verursacht wird:

Code: Alles auswählen

this.getField("Text7").value = stunden + ":" + minutenausdruck
wenn das Feld in Adobe dein Ergebnis z.B. im Zeit-format braucht, aber Text geliefert bekommt => Fehler.

Du wandelst ja die aus dem Eingafeld geholten Werte in Strings um:

Code: Alles auswählen

dtStart = dtStart.toString();
Ich kann aber keine Rückwandlung finden.

Ich tippe, wie gesagt, dass genau das das Problem ist.
mumpel23
Chipsocampa
Beiträge: 208
Registriert: Mo 17. Jan 2022, 22:18
Wohnort: Lindau
Interessen: Alles außer Sellerie
Berufliche Tätigkeit: Betriebs- und Verkehrseisenbahner
Betriebssysteme & Version: Windwos 10 und 11
Kontaktdaten:

Re: Javascript - Rechnen mit ungerade Zahlen

Beitrag von mumpel23 »

Aber weshalb nur bei ungeraden Ergebnissen? Gerade Ergebnisse machen keine Probleme. Die Felder sind als Zeit im Format "hh:mm" formatiert.
mumpel23
Chipsocampa
Beiträge: 208
Registriert: Mo 17. Jan 2022, 22:18
Wohnort: Lindau
Interessen: Alles außer Sellerie
Berufliche Tätigkeit: Betriebs- und Verkehrseisenbahner
Betriebssysteme & Version: Windwos 10 und 11
Kontaktdaten:

Re: Javascript - Rechnen mit ungerade Zahlen

Beitrag von mumpel23 »

In Excel geht das leichter. Da kann man mit "Rest" arbeiten. Gibt es sowas in JS nicht? Kann nicht verstehen, weshalb man in JS Zeiten erst in String umwandeln muss, um damit rechnen zu können.
sixbytes
Chipsomulaner
Beiträge: 47
Registriert: Fr 5. Aug 2022, 18:45

Re: Javascript - Rechnen mit ungerade Zahlen

Beitrag von sixbytes »

mumpel23 hat geschrieben: Do 22. Sep 2022, 21:46 Aber weshalb nur bei ungeraden Ergebnissen? Gerade Ergebnisse machen keine Probleme. Die Felder sind als Zeit im Format "hh:mm" formatiert.
Bei ungeraden Ergebnissen erhält dein String noch .5 hinten dran, das passt dann nicht auf das erwartete Feld-Format. Du solltest Dich in dem Falle entscheiden, ob Du diese halben Minuten auf- oder abrunden möchtest. Das macht man in JS entweder mit Math.ceil(x) (aufrunden) oder Math.floor(x) (abrunden).
Kann beispielsweise an folgender Stelle erfolgen, vor dem optionalen voranstellen einer zusätzlichen Null vor die Minuten.

Code: Alles auswählen

var minutenausdruck = Math.floor(minuten);
Möglicherweise sollte die Voranstellug einer Null optional auch bei den Stunden erfolgen.
mumpel23
Chipsocampa
Beiträge: 208
Registriert: Mo 17. Jan 2022, 22:18
Wohnort: Lindau
Interessen: Alles außer Sellerie
Berufliche Tätigkeit: Betriebs- und Verkehrseisenbahner
Betriebssysteme & Version: Windwos 10 und 11
Kontaktdaten:

Re: Javascript - Rechnen mit ungerade Zahlen

Beitrag von mumpel23 »

Danke! Habe ich schon herausgefunden.

Jetzt muss ich nurnoch lernen, wie ich automatische Pausen in ein Feld bekomme. Bis 06:00 keine Pause. Von 06:01 bis 09:00 30 Minuten (00:30). Ab 09:01 45 Minuten (00:45). Ist aber nicht so leicht, Beispielcodes zu finden, wenn man kein Englisch kann.
Antworten