AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Wochentagsberechnung

Ein Thema von Balu der Bär · begonnen am 1. Okt 2006 · letzter Beitrag vom 2. Okt 2006
 
Balu der Bär
(Gast)

n/a Beiträge
 
#1

Wochentagsberechnung

  Alt 1. Okt 2006, 17:42
Nochmal ein Versuch eines Algorithmuses, schnell frei "übersetzt" nach Delphi aus der Wikipedia.

Ist sicherlich noch verbesserungswürdig, Vorschläge können gern gemacht werden.

Delphi-Quellcode:
(*

Wochentagsberechnung

Frei nach Wikipedia ([url]http://de.wikipedia.org/wiki/Wochentagsberechnung[/url])

Gibt den Wochentag zu einem Datum zurück.

Diese Funktion gibt eine Ganzzahl 0 bis 6 zurück, 0 steht dabei fuer Sonntag,
1 fuer Montag und so weiter. Die Jahreszahl des Datums muss zwischen 800
und 3100 liegen!

Datum: 02.10.2006
Autor: Balu der Baer

*)
 

function GetDaybyDate(day, month, year : Word) : Integer;
var
step1, step2, step3, step4, step5 : Integer;
yearnumbers, centurynumbers, i : Integer;
begin
 yearnumbers := year mod 100;
 centurynumbers := year div 100;
 if not ((centurynumbers >= 8) and (centurynumbers <= 31)) then
 begin
  raise Exception.CreateFmt('function GetDaybyDate: parameter Year must be between 800 and 3100 but is %d', [Year]);
 end else
 begin
  step1 := day mod 7;
  case month of
   1, 10: step2 := 0;
   2, 3, 11: step2 := 3;
   4, 7: step2 := 6;
   5: step2 := 1;
   6: step2 := 4;
   8: step2 := 2;
   9, 12: step2 := 5;
  end;
  step3 := (yearnumbers div 12) + (yearnumbers mod 12) + ((yearnumbers mod 12) div 4);
  case centurynumbers of
   11,15,19,23,27,31 : step4 := 0;
   10,14,18,22,26,30 : step4 := 2;
   9,13,17,21,25,29 : step4 := 4;
   8,12,16,20,24,28 : step4 := 6;
  end;
  if (IsLeapYear(year) and (month = 1)) or (IsLeapYear(year) and (month = 2)) then step5 := 6 else step5 := 0;
  i := (step1 + step2 + step3 + step4 + step5) mod 7;
  result := i;
  end;
end;
Möglicher Aufruf:
Delphi-Quellcode:
var
 days : array [0..6] of String = ('Sonntag', 'Montag', 'Dienstag', 'Mittwoch', 'Donnerstag', 'Freitag', 'Samstag');

...

procedure TForm1.Button1Click(Sender: TObject);
begin
 ShowMessage(days[GetDaybyDate(StrToInt(edit1.Text), StrToInt(edit2.Text), StrToInt(edit3.Text))]);
end;
So, jetzt könnt ihr mich zerfleischen, obwohl ich hoffe das das so in Ordnung ist.
  Mit Zitat antworten Zitat
 


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 10:11 Uhr.
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz