Forenindex » Programme » Web/Internet » PDF Grundlagen / Web / eForms » Werktage berechnen

Werktage berechnen

Ramius
Beiträge gesamt: 208

19. Feb 2004, 20:02
Bewertung:

gelesen: 8760

Beitrag als Lesezeichen
Hallo Forum

Es gibt ja ne Menge Zeit und Datumsberechnungen. Nur finde ich nirgens, wo man in zwei Formularfelder die Arbeitstage berechnen kann. Also ohne Sams- und Sonntage?

Gruss Ramius

Werktage berechnen

Markus Walker
Beiträge gesamt: 494

20. Feb 2004, 12:08
Bewertung:

gelesen: 8760

Beitrag als Lesezeichen
Um den Wochentag eines gegebenen Datums zu bestimmen, gibt es im Date Objekt die Methode getDay().
http://selfhtml.teamone.de/...kte/date.htm#get_day

Ich sähe als Lösung eine Funktion, welche zuerst die Anzahl Tage berechnet und dann per Schleife jeden Tag auswertet und den Tageszähler entsprechend inkremetiert.

Werktage berechnen

Anonym
Beiträge gesamt: 22827

20. Feb 2004, 18:15
Bewertung:

gelesen: 8760

Beitrag als Lesezeichen
Theoretisch bin ich eigentlich auch soweit gekommen. Da ich aber nicht Java-Script-Poweruser bin habe ich mit der Schleife meine liebe Mühe. Vielleicht weiss jemand, wie diese Schleife aussehen könnte. Am besten mit einer Erklärung dazu.

Vielen Dank
Ramius

Werktage berechnen

Anonym
Beiträge gesamt: 22827

23. Feb 2004, 08:18
Bewertung:

gelesen: 8760

Beitrag als Lesezeichen
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

Werktage berechnen

Markus Walker
Beiträge gesamt: 494

23. Feb 2004, 08:20
Bewertung:

gelesen: 8760

Beitrag als Lesezeichen
Da hat mich das Forum wieder mal raus geschmissen...

Noch eine Präzisierung: Das «getField().value» Property enthält nicht a priori ein String, sondern kann auch ein numerischer Wert oder ein Date Objekt enthalten. Letzteres konnte ich aber noch nie direkt erreichen.

(Dieser Beitrag wurde von Markus Walker am 23. Feb 2004, 09:20 geändert)

Werktage berechnen

Ramius
Beiträge gesamt: 208

27. Feb 2004, 09:03
Bewertung:

gelesen: 8760

Beitrag als Lesezeichen
Vielen Dank für die schnelle und detaillierte Angaben. Ich habe dies bei mir eingegeben aber ich erhalte die Fehlermeldung:

string.charAt is not a function

Was bedeutet das?

Gruss Ramius