скрыть

скрыть

  Форум  

Delphi FAQ - Часто задаваемые вопросы

| Базы данных | Графика и Игры | Интернет и Сети | Компоненты и Классы | Мультимедиа |
| ОС и Железо | Программа и Интерфейс | Рабочий стол | Синтаксис | Технологии | Файловая система |



Google  
 

Вычисление немецких праздников



Оформил: DeeCo

unit Feiertage;
 // Unit Holidays; 

interface

 uses
   Windows, SysUtils;

 // Declare a structure to hold the Information 
// Deklarieren der Struktur, um die Feiertage abzuspeichern 
type
   THoliday = record
     Date: TDateTime;
     Name: string;
   end;
   THolidayTable = array of THoliday;

 // Function to call to get the Holiday Table with all Holidays of a year 
// Der Funktionsaufruf, um die Feiertage eines Jahres abzufragen 
function GetHolidayTable(Year: Word): THolidayTable;

 implementation

 function TUrlaubsForm.GetHolidayTable(Year: Word): THolidayTable;

   // Function to add a holiday by Day and Month 
  // Funktion, um einen Feiertag uber seinen Tag\Monat hinzuzufugen 
  procedure AddHoliday(DD, MM: Word; HDName: string); overload;
   begin
     SetLength(Result, High(Result) + 2);
     with Result[High(Result)] do
     begin
       Date := EncodeDate(Year, MM, DD);
       Name := HDName;
     end;
   end;

   //Function to add holiday by date serial 
  //Funktion, um den Feiertag uber die Datumsseriennummer hinzuzufugen 
  procedure AddHoliday(HDDate: TDateTime; HDName: string); overload;
   begin
     SetLength(Result, High(Result) + 2);
     with Result[High(Result)] do
     begin
       Date := HDDate;
       Name := HDName;
     end;
   end;

   // Function to get easter sunday 
  // Function zur Berechnung des Ostersonntags 
  function GetEasterDate(YYYY: Word): TDateTime;
   var
     A, B, C, D, E, F, G, H, I, K, L, M, N, P: Word;
     DD, MM: Word;
   begin
     a := YYYY mod 19;
     b := YYYY div 100;
     c := YYYY mod 100;
     d := b div 4;
     e := b mod 4;
     f := (b + 8) div 25;
     g := (b - f + 1) div 3;
     h := (19 * a + b - d - g + 15) mod 30;
     i := c div 4;
     k := c mod 4;
     l := (32 + 2 * e + 2 * i - h - k) mod 7;
     m := (a + 11 * h + 22 * l) div 451;
     n := (h + l - 7 * m + 114) div 31;
     p := (h + l - 7 * m + 114) mod 31 + 1;
     DD := p;
     MM := n;
     Result := EncodeDate(YYYY, MM, DD);
   end;

    var
   EDate: TDateTime;
 begin
   // Add fixed holidays 
  // Hinzufugen der festen Feiertage 
  AddHoliday(1, 1, 'Neujahr');
   AddHoliday(1, 5, 'Tag der Arbeit');
   AddHoliday(3, 10, 'Tag der deutschen Einheit');
   AddHoliday(31, 10, 'Reformationstag');
   // AddHoliday(24, 12, 'Heiligabend'); 
  AddHoliday(25, 12, '1. Weihnachtsfeiertag');
   AddHoliday(26, 12, '2. Weihnachtsfeiertag');
   // AddHoliday(31, 12, 'Silvester'); 
  // Add holidays relative to easter sunday 
  // Hinzufugen der Feiertage, die von Ostern abhangen 
  EDate := GetEasterDate(Year);
   AddHoliday(EDate, 'Ostersonntag');
   AddHoliday(EDate - 2, 'Karfreitag');
   AddHoliday(EDate + 1, 'Ostermontag');
   AddHoliday(EDate + 39, 'Christi Himmelfahrt');
   AddHoliday(EDate + 49, 'Pfingstsonntag');
   AddHoliday(EDate + 50, 'Pfingstmontag');
   // Gets 3rd Wednesday in November 
  // Ermittelt den 3. Mitwoch im November 
  EDate := EncodeDate(Year, 11, 1);
   EDate := EDate + ((11 - DayOfWeek(EDate)) mod 7) + 14;
   AddHoliday(EDate, 'Bu?- und Bettag');
 end;

 end.

 // This Units works since the year 1584 
// Diese Unit arbeitet mit Jahreszahlen nach 1584 





Copyright © 2004-2016 "Delphi Sources". Delphi World FAQ




Группа ВКонтакте   Ссылка на Twitter   Группа на Facebook