Pascal: beépített eljárásokkal lehet dátumok közt számolni?
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.
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 ???
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.
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.
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.
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.
Ejbenjaro programja kiakad nálam e sornál:
Akkor:=StrToDateTime('01'+DateSeparator+'05'+DateSeparator+'2017');
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 :)
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!