Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi ein Jahrhundert zurückrechnen ? (https://www.delphipraxis.net/49287-ein-jahrhundert-zurueckrechnen.html)

spacewolf 8. Jul 2005 12:42


ein Jahrhundert zurückrechnen ?
 
Gibts ne einfach möglichlichkeit einen TDatewert um 100 Jahre zurückzurechnen.
Ich bekomme in einer Software von mir Geburtsdaten von Menschen rein die noch gar nicht leben könnten wie z.B. 12.12.2064.
Naja, und ich würde gern das ganze Problem zumindest umgehen in dem ich sage, wenn Datum größer als heute, dann minimiere das Datum um hundert jahre....

einen Tag rechne ich mit:

Delphi-Quellcode:
 tag := now - 1
zurück.

Ein Jahr vielleicht nich mit minus 365 .
Aber 100 Jahre mit berücksichtigung der Schaltjahre übersteigt mein Wissen in Datums und Zeitberechnung.

Wollte schon alles in Strings umwandeln und dann aus "20" einfach "19" machen. Aber mein Kollege, findet das wohl zu "quick And dirty" - habt ihr ne gute Idee ?

Andreas

barf00s 8. Jul 2005 12:45

Re: ein Jahrhundert zurückrechnen ?
 
in der DateUtils hast die konstanten für jeweils eine Sekunde, eine Minute, eine Stunde ... das kannst ja auf ein Jahr hochrechnen und dann von Now abziehen

marabu 8. Jul 2005 12:50

Re: ein Jahrhundert zurückrechnen ?
 
Delphi-Quellcode:
function PrevCentury(dt: TDateTime): TDateTime;
var
  y, m, d: word;
begin
  DecodeDate(dt, y, m, d);
  Result := EncodeDate(y - 100, m, d) + Frac(dt);
end;
Grüße vom marabu

NicoDE 8. Jul 2005 12:51

Re: ein Jahrhundert zurückrechnen ?
 
Delphi-Quellcode:
function DateTimeDecYear(const DateTime: TDateTime; N: Word): TDateTime;
var
   Year, Month, Day: Word;
   Hour, Min, Sec, MSec: Word;
begin
  DecodeDate(DateTime, Year, Month, Day);
  DecodeTime(DateTime, Hour, Min, Sec, MSec);
  Dec(Year, N);
  Result := EncodeDate(Year, Month, Day) + EncodeTime(Hour, Min, Sec, MSec);
end;

procedure TForm1.Button1Click(Sender: TObject);
begin
  ShowMessage(DateTimeToStr(DateTimeDecYear(Now, 100)));
end;
hm, marabu war wieder schneller und optimierter *g*

marabu 8. Jul 2005 12:58

Re: ein Jahrhundert zurückrechnen ?
 
Hi Nico,

Zitat:

Zitat von NicoDE
marabu war wieder schneller

schicke mir eine PN bevor du anfängst zu schreiben - dann passiert sowas nicht.

Freundliche Grüße vom marabu

spacewolf 8. Jul 2005 12:59

DANKE - krazz schnell
 
seid ja krazz schnell...

:dp:

danke


Alle Zeitangaben in WEZ +1. Es ist jetzt 09:52 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz