HyperLink
Bejelentkezés
E-mail: 
Jelszó: 





Skip Navigation Links
 

Hányadik hét van az adott dátumon az éven belül?


Példaprogram letöltése

4057 bájt

A címben megfogalmazott kérdésre keressük a választ programból. Készítünk egy olyan függvényt, mely egy tetszőleges dátum alapján kiszámítja, hogy az hányadik hét az adott évben.

A válasz megadásához több másik kérdést is el kell tudnunk dönteni majd programból. Az egyik ilyen, hogy a megadott év vajon szökőév-e vagy sem. Ehhez készítünk egy IsLeapYear függvényt, mely paraméterként az év számát várja és logikai értékként adja vissza, hogy szökőévről van-e szó.
function IsLeapYear(year: integer): boolean;
begin
  result:=(year mod 4=0) and ((year mod 100<>0) or (year mod 400=0));
end;
Másik ilyen kérdés, hogy hány nap van egy adott hónapban. Ez szökőév és február hónap esetén okoz csak némi bonyodalmat.
function MonthDays(year, month: integer): integer;
const
  DaysPerMonth: array[1..12] of integer = (31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31);
begin
  if (month=2) and IsLeapYear(year) then begin
    result:=29;
  end else begin
    result:=DaysPerMonth[month];
  end;
end;
Végül már foglalkozhatunk az alapkérdéssel. A válasz megadásához tudnunk kell először is, hogy az adott dátumig hány nap telt el az adott évben.
function WeekOfYear(date: TDateTime): integer;
begin
  count:=0;
  DecodeDate(date, year, month, day);
Ehhez egy ciklussal összeadjuk az egész hónapok napjainak számát.
  for i:=1 to month-1 do begin
    count:=count+MonthDays(year, i);
  end;
Végül hozzáadjuk az adott dátum hónapjában eltelt napok számát. Ekkor a count változóban már rendelkezésre áll, hogy hány nap telt el az évből.
  count:=count+day;
Az eredményhez osztjuk a count értékét héttel, majd hozzáadunk egyet, hogy az első hét ne a nulla szám legyen és már készen is vagyunk.
  result:=count div 7+1;
end;
A függvényünket felhasználni igen egyszerű: paraméterként adjunk számára egy TDateTime típusú dátumot, majd visszatérési értékként kapunk egy integer számot, melyből megtudhatjuk, hogy hányadik hétre is esik az adott dátum.
procedure TForm1.FormCreate(Sender: TObject);
begin
  Label1.Caption:=IntToStr(WeekOfYear(Now));
end;

Cikksorozat

#IDKategóriaCikk címeSorozat
3047WindowsAz XML bemutatása1. rész
3059WindowsAz XML bemutatása2. rész
3068WindowsAz XML bemutatása3. rész
3077WindowsAz XML bemutatása - deklarációk4. rész
3086WindowsAz XML bemutatása - MSXML, XSLT5. rész
3094WindowsAz XML bemutatása - DTD6. rész
3105WindowsXML adatok megjelenítése Excel-ben7. rész
3114WindowsDokumentum hivatkozások az XML-ben8. rész
3123WindowsXML adattípusok9. rész
3132WindowsXML adatok HTML oldalakon10. rész
3141WindowsXML Notepad11. rész


Könyv
Ez a cikk megtalálható ebben a könyvben: Delphi Software Offline 2002 évkönyv 542. oldal

Felhasználási feltételek
A Software Online szoftverfejlesztői magazin mindegyik cikke, minden megjelent képe, és egyéb publikált anyaga szerzői jog védelme alatt áll! Bármilyen formában történő másodlagos terjesztésük, közzétételük vagy felhasználásuk kizárólag a kiadó előzetes írásbeli engedélyével történhet!

Copyright © 1999-2012 Animare Software Kft. Minden jog fenntartva!
| Készült: Animare Stúdió | Adatvédelem | Kapcsolat |