Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi Cardinal in TDateTime (https://www.delphipraxis.net/78703-cardinal-tdatetime.html)

duff 9. Okt 2006 18:41


Cardinal in TDateTime
 
Hallo,

ich habe eine Cardinal Zahl die so

Code:
3369061800 // sollte 05.10.2006 19:30 sein
aussieht!

Jetzt will ich diese Zahl in TDateTime umwandeln nur schaffe ich das nicht. Einfach hinter die fünfte Stelle ein Komma einfügen ist nicht so schick oder???

Gruß

3_of_8 9. Okt 2006 18:47

Re: Cardinal in TDateTime
 
Delphi-Quellcode:
var dt: TDateTime;
begin
  dt:=UnixToDateTime(3369061800);
end;
EDIT: Allerdings wäre der richtige Wert dann 1160076600.

duff 9. Okt 2006 19:26

Re: Cardinal in TDateTime
 
Wenn ich mich nicht täusche ist UnixToDateTime doch von 01.01.1970 00:00 an gerechnet!! Diese mir vorliegende Zeit ist aber vom 1.1.1900 00:00 an gerechnet!!

3_of_8 9. Okt 2006 19:45

Re: Cardinal in TDateTime
 
Und in welcher Einheit?

duff 9. Okt 2006 19:58

Re: Cardinal in TDateTime
 
Wenn ich das wüsste... ich bekomme diesen Wert aus einer Binären Datei die nicht wirklich dokumentiert ist!!

Was ich rausfinden konnte ist dieses

Zitat:

04-07 : 04 Byte / longword / Uhrzeit in Sekunden seit 01.01.1900 00:00

duff 9. Okt 2006 20:30

Re: Cardinal in TDateTime
 
habs...

Delphi-Quellcode:
function SekundenToDateTime (sec: Int64): TDateTime;
var
  DTime : TDateTime;
begin
  DTime := sec / (60 * 60 * 24);
  Result := DTime;
end;

stz 9. Okt 2006 21:05

Re: Cardinal in TDateTime
 
Zitat:

Zitat von duff
habs...

Delphi-Quellcode:
function SekundenToDateTime (sec: Int64): TDateTime;
var
  DTime : TDateTime;
begin
  DTime := sec / (60 * 60 * 24);
  Result := DTime;
end;

eine Variable zu viel :wink:
mein Vorschlag:
Delphi-Quellcode:
function SekundenToDateTime (sec: Int64): TDateTime;
begin
  Result := sec / (60 * 60 * 24);
end;
Gruß
Malte

marabu 9. Okt 2006 21:16

Re: Cardinal in TDateTime
 
Besser so:

Delphi-Quellcode:
function SekundenToDateTime (sec: Int64): TDateTime;
begin
  Result := 2.0 + sec / (60 * 60 * 24);
end;
Delphi verwendet den 30.12.1899 als Referenzdatum, nicht den 1.1.1900.

Gute Nacht

marabu

duff 9. Okt 2006 21:17

Re: Cardinal in TDateTime
 
Danke und GN8 :thumb:


Alle Zeitangaben in WEZ +1. Es ist jetzt 06:19 Uhr.

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