AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Code-Bibliothek Neuen Beitrag zur Code-Library hinzufügen Delphi Wochentagsbestimmung klassisch und plattformunabhängig
Thema durchsuchen
Ansicht
Themen-Optionen

Wochentagsbestimmung klassisch und plattformunabhängig

Ein Thema von Wolfgang Mix · begonnen am 7. Mär 2010 · letzter Beitrag vom 8. Mär 2010
 
Benutzerbild von Wolfgang Mix
Wolfgang Mix

Registriert seit: 13. Mai 2009
Ort: Lübeck
1.222 Beiträge
 
Delphi 2005 Personal
 
#1

Wochentagsbestimmung klassisch und plattformunabhängig

  Alt 7. Mär 2010, 18:55
Am häufigsten wird der Algorithmus von Zeller verwendet.
Dieser ist auch in den meisten Betriebssystemen implementiert.
Die Ergebnisse liefern die sogenannte "voreilende" Zählung
mit Samstag=0, Sonntag = 1 usw.

Von vielen weiteren Kalenderformeln ist der Algorithmus von
Robertson für den gregorianischen Kalender hervorzuheben,
da er sehr einfach ist. Die Ergebnisse liefern die früher
übliche "normale" Zählung mit So=0, Mo=1 usw.
Wer es ISO-konform mag, kann jeweils noch eine Case-Struktur
hinterherschieben.

Die nach Delphi umgesetzten Codeschnippsel:

Delphi-Quellcode:
function wt_zellergreg(d,m,y:integer):integer;
var century,year:integer;
begin
  if (m<3) then
  begin
    m:=m+12;
    y:=y-1;
  end;
  century := y div 100;
  year := y mod 100;
  result:= (d + ((m+1)*26) div 10 + year + year div 4
              + century div 4 + 5*century) mod 7;
  //Samstag:=0;Sonntag=1
end;

function wt_zellerjul(d,m,y:integer):integer;
var century,year:integer;
begin
   if m<3 then
   begin
     m:=m+12;
     y:=y-1;
   end;
   century := y div 100;
   year := y mod 100;
   result:=(d + ((m+1)*13 div 5) + year + year div 4
              + 5 + 6 * century) mod 7;
  //Samstag:=0;Sonntag=1
end;

function WT_Robertson(T,M,J:integer):integer;
var A,B,C,D,E:integer;
Begin
  A:=M+10;
  B:=(M-14) div 12 + J;
  C:=A-12*A div 13;
  D:=(13*C-1) div 5;
  E:=5*(B mod 100) div 4;
  result:=(D+T+77+E+B div 400 - 2*(B div 100)) mod 7;
  //Sonntag =0; Montag=1
end;

procedure TForm1.Button1Click(Sender: TObject);
var dd,mm,yy:integer;
begin
  dd:=StrToInt(Spinedit1.Text);
  mm:=StrToInt(Spinedit2.Text);
  yy:=StrToInt(Spinedit3.Text);
  Edit1.Text:=IntToStr(wt_zellerjul(dd,mm,yy));
end;

procedure TForm1.Button2Click(Sender: TObject);
var d,m,y:integer;
begin
  d:=StrToInt(SpinEdit1.Text);
  m:=StrToInt(SpinEdit2.Text);
  y:=StrToInt(SpinEdit3.Text);
  Edit1.Text:=IntToStr(wt_zellergreg(d,m,y));
end;


procedure TForm1.Button3Click(Sender: TObject);
var d,m,y:integer;
begin
  d:=StrToInt(SpinEdit1.Text);
  m:=StrToInt(SpinEdit2.Text);
  y:=StrToInt(SpinEdit3.Text);
  Edit1.Text:=IntToStr(WT_Robertson(d,m,y));
end;

end.
Wolfgang Mix
Wolfgang Mix
if you can't explain it simply you don't understand it well enough - A. Einstein
Mein Baby:http://www.epubli.de/shop/buch/Grund...41818516/52824
  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 00:56 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