Pascal: program hónap elejétől végéig kiírja dátumokat és ezt megadott hónapok közt is, hogyan kell ezt megoldani? (bővebben lent)
Szeretném, ha megadom neki számmal az évet és hónapot, a hónap első napjától az utolsóig folyamatosan kiírná a dátumot, nappal együtt.
Tömbbel tudnám megoldani, hogy a program "automatikusan tudja" hogy az adott hónap milyen hosszú, illetve le tudom kérni, hogy szökőév van -e, de reménykedem benne, hogy "egyszerűbb megoldás" is van e problémára.
Bónuszként kiírhatná azt is, hogy adott évben mikor van Húsvét és Pünkösd...
Megadom neki például, hogy 2016.01 és hogy 2016.06 és január 1-től elszámolna június utolsó napjáig...
Egyszerű megoldás van erre?
A "datumt" változót csak úgy bevezettem, nem tudom, mit tegyek vele átkonvertálás után hogy ilyen módon számolni tudjak vele...
program datumok;
uses SysUtils, DateUtils;
var
datums, tempstr : string;
datumt : TDateTime;
dowcount : integer;
i : byte;
begin
DateSeparator := '.';
for i := 1 to 31 do
begin
str (i, tempstr);
datums := '2017.01.' + tempstr;
datumt := StrToDateTime(datums);
dowcount := DayOfWeek(datumt);
WriteLn('Ma ',datums,' ',LongDayNames[dowcount],' van.');
end;
ReadLn;
end.
Programnak szeretném megtanítani "egyszerűen", a hónapok hosszát és hogy tetszőleges hónapok közt tudjon számolni.
Alapból tömbben definiált hónap-hosszal meg tudnám tanítani és az "adott év szökőév-e" lekérdezésével, de bízom benne, hogy van valami egyszerűbb megoldás is amit Pascal-osok ismertek.
Én ahogy dateutils unit-ot átnéztem, nem igazán találtam, de biztos van.
Incmonth-ot pl. találtam ami nekem jó lehet, bár nekem egyesével kellenének a dátumok, nem hirtelen hónapot szeretnék lépni.
program datumok;
uses
Windows,
SysUtils;
var
DateStart, DateEnd, DateDay: TDateTime;
begin
DateStart := EncodeDate(2016,01,01);
DateEnd := EncodeDate(2016,06+1,01); // A következõ hónap elejéig.
DateDay := DateStart;
while (DateDay < DateEnd) do
begin
Writeln(DateToStr(DateDay));
{A trükk az, hogy a TDateTime típus igazából Double típus.
így elég csak sima összeadással hozzáadni 1-et,
és megkapod a következõ napot.}
DateDay := DateDay + 1; // A következõ nap
end ;
Readln;
end.
Nagyon köszönöm.
Húsvétot miként tudom kiíratni, hogy "adott évben" mikorra esik pl? Valamint pünkösdöt
Kapcsolódó kérdések:
Minden jog fenntartva © 2024, www.gyakorikerdesek.hu
GYIK | Szabályzat | Jogi nyilatkozat | Adatvédelem | Cookie beállítások | WebMinute Kft. | Facebook | Kapcsolat: info(kukac)gyakorikerdesek.hu
Ha kifogással szeretne élni valamely tartalommal kapcsolatban, kérjük jelezze e-mailes elérhetőségünkön!