Kezdőoldal » Számítástechnika » Programozás » Pascal: beépített eljárásokkal...

Pascal: beépített eljárásokkal lehet dátumok közt számolni?

Figyelt kérdés

Szeretném megoldani, hogy a program az aktuális dátumot lekérve és egy múltbeli dátumot bekérve kiszámolná, hogy hány nap telt el a kettő közt.

Nem kézzel szeretném leprogramozni a szökőévek és egyebek figyelését, mert úgy tudom: vannak erre nagyon jó beépített eljárások.

Amit sikerült kideríteni, azt ide másolom.

elvileg csak ki kell vonni egymásból a két dátumot és eredményt kiírni, de a dátum-bekéréssel is gondban vagyok...


program datumprog;


uses SysUtils, DateUtils;


var

aktualis, masik : TDateTime;

begin

aktualis := Now;

ReadLn(masik);

end.



2016. dec. 2. 21:21
1 2
 11/20 A kérdező kommentje:
Arról nem olvastam hogy a 2000-es év után három számjeggyel kellene írni a dátumokat.
2016. dec. 3. 17:58
 12/20 anonim ***** válasza:
Mert nem pontokat, vesszőket, meg egyebet kell írni, hanem azt, hogy DateSeparator... Nem fogja a sima stringeket elfogadni, mert a dátum formázása környezetfüggő, és a Pascal igyekszik minden hibalehetőséget kiküszöbölni fordítási időben, ezért van egy kiemelt DateSeparator karakter, és kizárólag azt fogadja el. De konkrét példakód van a linken, ami mutatja is.
2016. dec. 3. 17:59
Hasznos számodra ez a válasz?
 13/20 SimkoL ***** válasza:

program datumprog;


uses SysUtils, DateUtils;


var s2 : string;

begin

DateSeparator := '/';

TimeSeparator := '.';

s2 := '2017/12/11 11.11.45';

WriteLn(DaySpan(StrToDateTime(s2), Now):5:5, ' nap a kulonbseg');

ReadLn;

end.


Kérdés ???

2016. dec. 3. 18:14
Hasznos számodra ez a válasz?
 14/20 ejbenjaro ***** válasza:

program elteltnap;


uses sysutils, dateutils;


var

Akkor, Most: TDateTime;


begin

Writeln ('ShortDateFormat ',ShortDateFormat);

readln;

Most:=Now;

Akkor:=StrToDateTime('01'+DateSeparator+'05'+DateSeparator+'2017');

Writeln('Napok száma: ', DaysBetween(Most,Akkor));

Writeln('Napok száma: ', DaySpan(Most,Akkor):6:2);

end.

2016. dec. 3. 18:21
Hasznos számodra ez a válasz?
 15/20 A kérdező kommentje:

Nagyon köszönöm a segítséget.

Nekem a date separator-nak egyértelműen a - karaktert jelölte meg a belinkelt kód és amit másoltam pl. a StrToDateTime esetén, ott is - jellel voltak elválasztva a számok.

Nem tudom mit nem vehettem észre.

Ettől függetlenül az is segítség lett volna nyilvánvalóan ha a DateTimeToStr is a normális date-separator-t használja.

2016. dec. 3. 18:26
 16/20 SimkoL ***** válasza:

Programom belül nagyon sok mindent 'felülbírálhatsz', Delphi példa:


var CurrencyString: string;

var CurrencyFormat: Byte;

var NegCurrFormat: Byte;

var ThousandSeparator: Char;

var DecimalSeparator: Char;

var CurrencyDecimals: Byte;

var DateSeparator: Char;

var ShortDateFormat: string;

var LongDateFormat: string;

var TimeSeparator: Char;

var TimeAMString: string;

var TimePMString: string;

var ShortTimeFormat: string;

var LongTimeFormat: string;

var ShortMonthNames: array[1..12] of string;

var LongMonthNames: array[1..12] of string;

var ShortDayNames: array[1..7] of string;

var LongDayNames: array[1..7] of string;

var SysLocale: TSysLocale;

var EraNames: array[1..7] of string;

var EraYearOffsets: array[1..7] of Integer;

var TwoDigitYearCenturyWindow: Word = 50;

var ListSeparator: Char;


ha kell, élj vele.

2016. dec. 3. 18:35
Hasznos számodra ez a válasz?
 17/20 A kérdező kommentje:

Köszönöm szépen.

Tulajdonképpen ezt az egy karaktert nem találtam el, vagy értettem félre, illetve az sem esett le valamiért, hogy ha nem deklarálom, akkor is hivatkozhatom rá, - gondolom - mint valamiféle konstansra, DateSeparator néven.

2016. dec. 3. 18:40
 18/20 SimkoL ***** válasza:
Nem konstans hanem változó ezért átírható tetszőlegesre.
2016. dec. 3. 18:42
Hasznos számodra ez a válasz?
 19/20 A kérdező kommentje:

Ejbenjaro programja kiakad nálam e sornál:

Akkor:=StrToDateTime('01'+DateSeparator+'05'+DateSeparator+'2017');

2016. dec. 3. 19:52
 20/20 SimkoL ***** válasza:

program elteltnap;


uses SysUtils, DateUtils;


var

Akkor, Most: TDateTime;


begin

DateSeparator := '/';

ShortDateFormat := 'mm/dd/yyyy';

Writeln('ShortDateFormat ',ShortDateFormat);

Most := Now;

Akkor := StrToDateTime('01' + DateSeparator + '05' + DateSeparator + '2017');

Writeln('Napok szama: ', DaysBetween(Most, Akkor));

Writeln('Napok szama: ', DaySpan(Most, Akkor):6:2);

ReadLn;

end.


Most már nem fog :)

2016. dec. 3. 20:14
Hasznos számodra ez a válasz?
1 2

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

A weboldalon megjelenő anyagok nem minősülnek szerkesztői tartalomnak, előzetes ellenőrzésen nem esnek át, az üzemeltető véleményét nem tükrözik.
Ha kifogással szeretne élni valamely tartalommal kapcsolatban, kérjük jelezze e-mailes elérhetőségünkön!