Und da vermutlich jemand drüber stolpern wird, hier die aktualisierte Version des Ferienscripts:
Code: Alles auswählen
var boolean holiday = false
var String holidayName = null
// Ferientermine Hessen laut schulferien.org
val termin = newArrayList(
"2024-03-25","2024-04-13","easter", "2024-07-15","2024-08-23","summer", "2024-10-14","2024-10-25","autumn", "2024-12-23","2025-01-10","christmas",
"2025-04-07","2025-04-21","easter", "2025-07-07","2025-08-15","summer", "2025-10-06","2025-10-17","autumn", "2025-12-22","2026-01-10","christmas",
"2026-03-30","2026-04-10","easter", "2026-06-29","2026-08-07","summer", "2026-10-05","2026-10-16","autumn", "2026-12-23","2027-01-12","christmas",
"2027-03-22","2027-04-02","easter", "2027-06-28","2027-08-06","summer", "2027-10-04","2027-10-15","autumn", "2027-12-23","2028-01-11","christmas",
"2028-04-03","2028-04-14","easter", "2028-07-03","2028-08-11","summer", "2028-10-09","2028-10-20","autumn", "2028-12-27","2029-01-12","christmas",
"2029-03-29","2029-04-13","easter", "2029-07-16","2029-08-24","summer", "2029-10-15","2029-10-26","autumn", "2029-12-24","2030-01-11","christmas",
"2030-04-08","2030-04-22","easter", "2030-07-22","2030-08-30","summer"
)
var i = 0
while(i < termin.size) {
logDebug("holidays", "0: {} 1: {} 2: {}", termin.get(i), termin.get(i+1), termin.get(i+2))
val start = LocalDate.parse(termin.get(i))
val end = LocalDate.parse(termin.get(i+1))
logDebug("holidays", "start: {} end: {} name: {}", start, end, termin.get(i+2))
if(start.isBefore(LocalDate.now) && end.plusDays(1).isAfter(LocalDate.now)) {
holidayName = termin.get(i+2) + "_holiday"
holiday = true
logInfo("holidays", "Ferien! start: {} end: {} name: {}", start, end, holidayName)
}
i += 3
}
HoliDayName.postUpdate(if (holidayName!==null) holidayName else "")
Holidays.postUpdate(if (holiday) ON else OFF)
Die Listenformatierung habe ich als ein Jahr pro Zeile angelegt, die fehlenden Leerzeichen sind nur der Optik geschuldet

immer drei Einträge bilden einen "Datensatz", das erste Datum ist der Startzeitpunkt, das zweite Datum ist der Endzeitpunkt,das dritte Datum ist der Ferienname.
LocalDate.parse() erwartet den String in exakt diesem Format (also mit führenden Nullen)
Die Schleife könnte man noch etwas flotter machen, die Liste ist ja chronologisch sortiert, man könnte also den Durchlauf abbrechen, sobald das Startdatum in der Zukunft liegt.
Als Start-/Enddatum habe ich jeweils exakt die in schulferien.org angegebenen Termine verwendet, deshalb muss man für das Enddatum noch einen Tag hinzuzählen.
Weiterhin habe ich eine map, welche mir die englischen Strings nach deutsch übersetzt - im Grunde ist diese Zwischenstufe unnötig, ich weiß...