Nach Weihnachten ist vor Weihnachten!
Nachdem ich in der vergangenen Saison von drei Usern per PN angeschrieben wurde, möchte ich hier meine Umsetzung zur Berechnung des ersten Adventsonntages bzw. der Weihnachtszeit vorstellen - es gibt aber sicher verschiedene, gleich richtige Ansätze.
Grundgedanke:
Der späteste 4. Adventsonntag kann der 24.12. sein, der früheste 4. Adventsonntag dementsprechend 6 Tage zuvor. Der früheste 1. Adventsonntag logischerweise wiederum drei Wochen davor. Somit braucht man nur mehr ab dem [EDIT: Datum korrigiert!] 27.11. auf den Wochentag achten.
Umgesetzt mit einem Programm und einem kleinen Script:
Hier wird um 12 Uhr mit einem Serienmuster "jährlich, 6. Jänner" die Systemvariable Weihnachtszeit zurückgesetzt, bzw. täglich um 12 Uhr ein Script ausgeführt.
12 Uhr hab ich deswegen gewählt, damit am 1. Adventsonntag am Abend z.B. die Weihnachtsbeleuchtung eingeschaltet und am 6. Jänner in der Früh wieder ausgeschaltet werden kann. Würde man da Mitternacht nehmen, wären unmotivierte Schaltzeiten die Folge.
Das Script sieht so aus:
Code: Alles auswählen
! Weihnachtszeit (1. Adventsonntag - 6. Jänner) berechnen
! RM 10.11.2025
var o-wz = dom.GetObject("Weihnachtszeit"); ! Systemvariable (Objekt)
var wz = o-wz.Value(); ! Systemvariable (Wert)
var dd = system.Date("%d").ToInteger(); ! aktuellen Tag ermitteln
var mm = system.Date("%m").ToInteger(); ! aktuellen Monat ermitteln
var day = system.Date("%u").ToInteger(); ! aktuellen Wochentag ermitteln, 1 = Montag ... 7 = Sonntag
var mmdd = dd + mm * 100; ! Monat und Tag in numerischen Wert umrechnen
if ((mmdd >= 1127) && (day == 7) && !wz) ! WENN Datum mind. 27.11. UND Sonntag UND SV noch nicht gesetzt
{
o-wz.State(true); ! DANN setze Weihnachtszeit = wahr
}
Das wär's eigentlich gewesen, hat bei mir - ohne wirkliche Anwendung
Roland