hilfdirselbst.ch
Facebook Twitter gamper-media

PlugIns, XTensions und Knowhow: Publishing-Worker.com

Ramius
Beiträge: 198
19. Feb 2004, 20:02
Beitrag #1 von 6
Bewertung:
(2446 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen

Werktage berechnen


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 Top
 
X
Markus Walker  M 
Beiträge: 494
20. Feb 2004, 12:08
Beitrag #2 von 6
Beitrag ID: #71429
Bewertung:
(2446 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen

Werktage berechnen


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.
als Antwort auf: [#71332] Top
 
Anonym
Beiträge: 22827
20. Feb 2004, 18:15
Beitrag #3 von 6
Beitrag ID: #71497
Bewertung:
(2446 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen

Werktage berechnen


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
als Antwort auf: [#71332] Top
 
Anonym
Beiträge: 22827
23. Feb 2004, 08:18
Beitrag #4 von 6
Beitrag ID: #71651
Bewertung:
(2446 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen

Werktage berechnen


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
als Antwort auf: [#71332] Top
 
Markus Walker  M 
Beiträge: 494
23. Feb 2004, 08:20
Beitrag #5 von 6
Beitrag ID: #71652
Bewertung:
(2446 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen

Werktage berechnen


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.
als Antwort auf: [#71332]
(Dieser Beitrag wurde von Markus Walker am 23. Feb 2004, 09:20 geändert)
Top
 
Ramius
Beiträge: 198
27. Feb 2004, 09:03
Beitrag #6 von 6
Beitrag ID: #72342
Bewertung:
(2446 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen

Werktage berechnen


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
als Antwort auf: [#71332] Top
 
X