Seite 1 von 1

Kalender, Feiertage und Wochenenden beibringen

Verfasst: 07.02.2014, 17:06
von swordfish
Hallo,

leider bin ich mit meinen Javascript Kenntnissen noch imme rnicht weit genug (aber ich arbeite daran). Ist in A LCD ja doch nochmal schwieriger, das einzubinden.

Folgendes Problem:
In einem Formular habe ich 2 Datumsfelder. Das erste muss ausgewählt werden, das zweite zeigt dann automatisch das gewählte datm plus 3 Monate an
(z.b. Feld 1 = 07.02.2014, dann wird in Feld 2 = 07.05.2014 ausgegeben). Die Tage dazwischen lasse ich dann auszählen.
Jetzt muss das Formular so geändert werden, dass, wenn das automatische Datum aus Feld 2 ein Samstag, sonntag oder Feiertag ist, dann muss bis zum nächsten werktag gerechnet werden.

Zur Berechnung der Feiertage habe ich dieses Skript entdeckt:

Code: Alles auswählen

[code] function OsterSonntag(Jahr, TagesDifferenz)     { // Erstellt von Ralf Pfeifer (www.arstechnica.de)          // Falls kein Datum angegeben, aktuelles Jahr verwenden.         if ((Jahr == "") || (Jahr == null)) { Jahr = new Date().getYear() }          // Falls ausserhalb des gültigen Datumsbereichs, kein Ergebnis zurueckgeben         if ((Jahr < 1970) || (2099 < Jahr)) {  return "Datum muss zwischen 1970 und 2099 liegen"; }          // Falls keine TagesDifferenz angegeben, TadgesDifferenz auf 0 setzen.         if ((TagesDifferenz == "") || (TagesDifferenz == null)) { TagesDifferenz = 0; }          var a = Jahr % 19;         var d = (19 * a + 24) % 30;         var Tag = d + (2 * (Jahr % 4) + 4 * (Jahr % 7) + 6 * d + 5) % 7;         if ((Tag == 35) || ((Tag == 34) && (d == 28) && (a > 10))) { Tag -= 7; }          var OsterDatum = new Date(Jahr, 2, 22)         // 86400000 = 24 h * 60 min * 60 s * 1000 ms         // Die Zahl 86400000 nicht ausklammern, sonst gibt's Probleme bei der Typumwandlung !!         OsterDatum.setTime(OsterDatum.getTime() + 86400000 * TagesDifferenz + 86400000 * Tag)          // Uhrzeit aus dem Datum entfernen         OsterDatum = OsterDatum.toLocaleString()         OsterDatum = OsterDatum.substring(0, OsterDatum.length - 9);         return OsterDatum;     } // -->
Da müssten dann noch die festen Feiertage eingepflegt werden usw.


[/code]

Kalender, Feiertage und Wochenenden beibringen

Verfasst: 08.02.2014, 00:36
von Merklin
Hallo swordfish,

kommt mir irgend wie, bekannt vor. ;););)

Also hier ist, wie ich finde, ein schönes und vor allen Dingen einfaches Script, wie du dein Problem lösen kannst.
Du musst eigentlich nur noch die Feiertage eingeben.

VG Merklin

Kalender, Feiertage und Wochenenden beibringen

Verfasst: 08.02.2014, 13:42
von swordfish
Danke für das skript, habe mir den code noch nicht angesehen, aber schon genmerkt, dass es alle Samstage und Sonntage rausrechnet. Das ist etwas zuviel des guten :-)

Es geht darum, dass das Skript Wochenenden grundsätzlich mit berechnet.
Nur wenn das enddatum auf einem feiertag oder wochenende liegt, muss bis zum nächsten kommenden Werktag aufgerechnet werden.

(Ist z.B. der automatisch generierte endtag ein Freitag und dieser ein Feiertag, dann muss das Skript 3 tage hinzu zählen bis zum nächsten Montag)

Mal sehen, ob ich das nachher so hingedreht kriege. Ich versuche mein Bestes, aber bei Javascript fehlen mir einfach noch die Basics.
Komme aus dem PHP/HTML/CSS Bereich :-)

Kalender, Feiertage und Wochenenden beibringen

Verfasst: 11.02.2014, 21:44
von swordfish
So, leider bin ich bisher kaum ein Stück weiter mit dem Problem.
Ich hänge mal mein Testskript hier dran.

Darin das erste Porblem: Das ausgeben des Wochentages funktioniert beim ersten, manuellen Date/Time Field problemlos,
beim zwieten, automtisch generierten Date/Time-Field bekomme ich immer den Js Standardtag (donnerstag) raus. Keine ahnung, wo mein Fehler ist.

Nochmal die Problematik:
Das erste feld wird manuell gefüllt, das zweite feld addiert 3 Monate hinzu.
Liegt im zweiten Feld das Datum auf einem Samstag / Sonntag oder Feiertag, soll statt dem Datum (1. Feld + 3 Monate) das Datum des nächstfolgenden Werktages stehen, also Datum "1 + 3 Monate + z.B. 2 Tage"



Kalender, Feiertage und Wochenenden beibringen

Verfasst: 12.02.2014, 11:29
von armine
Hallo swordfish,

wenn du dein Startdatum eingegeben hast, dann werden erst mal die Feiertage für das Jahr und – weil’s so einfach ist und in statistisch in einem Viertel der Fälle auch gebraucht wird – auch gleich fürs Folgejahr in ein Textfeld geschrieben. Die Feiertage sind erst mal für Baden-Würtemberg vorgegeben, aber auch für jede andere Region angelegt.

In einem weiteren Datumsfeld wird nur zu Kontrollzwecken das Datum in 3 Monaten ausgegeben.

Dein gesuchtes Datum (nicht am Wochenende oder einem Feiertag) gibt es in einem weiteren Datumsfeld. Zwischen diesem Feld und deinem Startdatum werden die Kalendertage ermittelt. Dabei zählen beide Tage je als ein Tag.

Was meinst du mit JavasScript-Standardtag == Donnerstag? Habe ich da etwas verpasst?

vg armine

Kalender, Feiertage und Wochenenden beibringen

Verfasst: 12.02.2014, 21:50
von swordfish
Hallo armine,

habe schon in anderen Beträgen gesehen, dass du hier der ultimative Crack in sachen Kalender bist :-)

Dein Skript funktioniert super, echt genial, genauso wie ich es brauchte und variabel ist es auch (Anzahl der Jahre)

Und was dazu gelernt habe ich ebenso, man kann also knallhart JS  über das XML File einspielen :D

für dich war es jetzt wohl nur ein Klacks, das so hin zu bekommen, aber so hätte ich selber das niemals basteln können. (Vielleicht in ein paar Jahren)

also, nochmals DANKE, DANKE, DANKE