import '../utils/helpers.dart'; /// Sehr vereinfachte österreichische Feiertage (bundesweit). /// Key = 'YYYY-MM-DD', Value = Name. Map buildHolidayMapAT(int year) { final Map m = {}; DateTime easter = _easterSunday(year); DateTime easterMon = easter.add(const Duration(days: 1)); DateTime ascension = easter.add(const Duration(days: 39)); DateTime whitMon = easter.add(const Duration(days: 50)); DateTime corpusChristi = easter.add(const Duration(days: 60)); void add(DateTime d, String name) => m[ymd(d)] = name; add(DateTime(year, 1, 1), 'Neujahr'); add(DateTime(year, 1, 6), 'Heilige Drei Könige'); add(easterMon, 'Ostermontag'); add(DateTime(year, 5, 1), 'Staatsfeiertag'); add(ascension, 'Christi Himmelfahrt'); add(whitMon, 'Pfingstmontag'); add(corpusChristi, 'Fronleichnam'); add(DateTime(year, 8, 15), 'Mariä Himmelfahrt'); add(DateTime(year, 10, 26), 'Nationalfeiertag'); add(DateTime(year, 11, 1), 'Allerheiligen'); add(DateTime(year, 12, 8), 'Mariä Empfängnis'); add(DateTime(year, 12, 25), 'Christtag'); add(DateTime(year, 12, 26), 'Stefanitag'); return m; } /// Gaußsche Osterformel (Gregorianisch) DateTime _easterSunday(int year) { final a = year % 19; final b = year ~/ 100; final c = year % 100; final d = b ~/ 4; final e = b % 4; final f = (b + 8) ~/ 25; final g = (b - f + 1) ~/ 3; final h = (19 * a + b - d - g + 15) % 30; final i = c ~/ 4; final k = c % 4; final l = (32 + 2 * e + 2 * i - h - k) % 7; final m = (a + 11 * h + 22 * l) ~/ 451; final month = (h + l - 7 * m + 114) ~/ 31; // 3=March, 4=April final day = ((h + l - 7 * m + 114) % 31) + 1; return DateTime(year, month, day); }