Ein Apple Script, um das Osterdatum und davon abhängige bewegliche Feiertage zu berechnen

von: 
Zuletzt geändert: 23. Mai 2025 09:39
8 504 Zuletzt geändert 23. Mai 2025 09:39

Leider zeigt Apples Kalender noch nicht die Feiertage für das nächste Jahr an. Ich behelfe mir solange mit einem Apple Script, um die beweglichen Feiertage auszurechnen. Dieses Script benutzt die Gauß'sche Osterregel, um das Datum für Ostersonntag und Pfingsten auszurechnen. Man gibt einfach die Jahreszahl ein (es sollte ein Datum nach der Gregorianischen Kalenderreform sein - 1800-2200).


  • Öffne den Script Editor
  • Kopiere den Code in das Fenster.
  • Sichere es in einer Datei und klicke den "Run" Knopf ▶︎.
  • Gebe die gewünschte Jahreszahl ein.

In den Einstellungen des Script Editors kann man das Script Menü der Menüleiste zufügen. Dann kann man das Script direkt vom Skript Menü aufrufen.

-- Compute the easter date using Gauss algorithm
-- Author: Leonie 2011

set theDate to current date
set d to the day of theDate
set m to the month of theDate
set y to the year of theDate
set ts to the time string of theDate
set t to the time of theDate
set w to the weekday of theDate
set h to t / hours

display dialog "For which year do you want to know the easter date?:" default answer y buttons {"OK"} default button {"OK"}
--return the result
--copy the result as list to {the y, the button_pressed}
set y to the text returned of the result as number

if y < 1800 then return ("Sorry, the year must be in the range 1800:2200" & y)
if y < 1900 then
	set mm to 23
	set nn to n
else if y < 2100 then
	set mm to 24
	set nn to 5
else if y < 2200 then
	set mm to 24
	set nn to 6
else
	return "Sorry, the year must be in the range 1800:2200"
end if

set a to y mod 19
set b to y mod 4
set c to y mod 7
set d to (19 * a + mm) mod 30
set e to (2 * b + 4 * c + 6 * d + nn) mod 7

if 22 + d + e < 32 then
	set mon to 3 --March
else
	set mon to 4 --April
end if
if mon = 3 then
	set easterday to 22 + d + e
else
	set easterday to d + e - 9
	if easterday = 26 then set easterday to 19
	if (easterday = 25) and (d = 28) and (e = 6) and (a > 0) then set easterday to 19
end if
set ds to "" & easterday & "/" & mon & "/" & y
set rosemonday to the date string of ((date ds) - 48 * days)
set karfreitag to the date string of ((date ds) - 2 * days)
set easterdate to the date string of date ds
set pentacost to the date string of ((date ds) + 49 * days)
set ascension to the date string of ((date ds) + 39 * days)
set mayday to the date string of date ("1/5/" & y)
--set deutschEinheit to date ("3/10/" & y)
--set christmasEve to date ("24/12/" & y)

display dialog "Im Frühjahr " & y & " liegen die Feiertage wie folgt:
 Rosenmontag:  " & rosemonday & ",
 Karfreitag:  " & karfreitag & ",
 Ostern: 	" & easterdate & ",
 Himmelfahrt:  " & ascension & ", 
 Pfingsten:  " & pentacost & ",
 1. Mai: " & mayday buttons {"Danke"} default button {"Danke"}

Kommentare

22. Mai 2025 14:32

Liebe Leonie,


wie gewünscht ergänze ich Dein Skript gerne um ein paar weitere kleine Zeilen – insbesondere solche, die in Bayern besonders relevant sind. 😉


-- Feiertage berechnen (bundesweit oder kirchlich)
set rosenmontag to easterdate - 48 * days
set gruendonnerstag to easterdate - 3 * days
set karfreitag to easterdate - 2 * days
set ostersonntag to easterdate
set ostermontag to easterdate + 1 * days
set himmelfahrt to easterdate + 39 * days
set pfingstsonntag to easterdate + 49 * days
set pfingstmontag to easterdate + 50 * days
set fronleichnam to easterdate + 60 * days
set tagderarbeit to date ("1/5/" & y)

-- Feste Feiertage in Bayern
set dreikoenige to date ("6/1/" & y)
set mariaeHimmelfahrt to date ("15/8/" & y)
set allerheiligen to date ("1/11/" & y)
set augsburgerFriedensfest to date ("8/8/" & y)


Du hast mit Deinem Skript eine wunderbare Grundlage geschaffen – damit hast Du mir wirklich eine große Freude gemacht.


Liebe Grüße! 🌺

22. Mai 2025 14:32

Willkommen in der Apple Support Community
Ein Forum, in dem Apple-Kunden sich gegenseitig mit ihren Produkten helfen. Melde dich mit deinem Apple Account an, um Mitglied zu werden.