o.k. schauen wir mal
Annahmen: Ein Textfeld «Start» und ein Textfeld «Ende» sind mit Format "d.m.yyyy" definiert. Die Ausgabe erfolgt in das Feld «Arbeitstage». Arbeitstage sind Montag bis Freitag. Nicht berücksichtig sind Feiertage.
var dStart = util.scand("d.m.yyyy", this.getField("Start").value);
var dEnde = util.scand("d.m.yyyy", this.getField("Ende").value);
/* Textfelder werden apriori als String eingelesen. Damit ein Date
* Objekt entsteht, kann die Methode «scand()» aus dem util» Objekt
* benutzt werden. Das Format des Datums kann durch die Feld-
* Formatierung sichergestellt werden (siehe Annahmen)
*/
var nDifferenzKalendertage = Math.round((dEnde - dStart)/(24*60*60*1000));
/* Wenn mit dem Date Objekt gerechnet wird, wird es dynamisch in
* einen andern Datentyp umgewandelt, hier zum Typ Number.
* In JavaScript wird das Datum in Millisekunden aufgelösst.
* 24 h pro Tag, 60 min. pro Stunde, 60 s pro Minute, 1000 ms pro
* Sekunde
* «Math.round()» ist nötig, um die Effekte der Fliess-Komma-
* Operation zu kompensieren.
*/
var nArbeitstage = 0; // Tageszähler
for (var j = 0; j <= nDifferenzKalendertage + 1; j++) {
var dTag = new Date(dStart*1 + j*24*60*60*1000);
if (dTag.getDay() > 0 && dTag.getDay() < 6) nArbeitstage++;
} //for
/* «nDifferenzKalendertage + 1» ist nötig, um Anfangs- und End-
* Tag mit zu zählen.
* Damit mit den aus dem Date Objekt dStart ein numerischer Wert wird,
* wird es mit 1 multipliziert
*/
this.getField("Arbeitstage").value = nArbeitstage;
HTH