Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Funktion um Zeitpunkt in Unix-Zeit zu wandeln - TDateTime=? (https://www.delphipraxis.net/131149-funktion-um-zeitpunkt-unix-zeit-zu-wandeln-tdatetime%3D.html)

Tempdir 19. Mär 2009 16:20


Funktion um Zeitpunkt in Unix-Zeit zu wandeln - TDateTime=?
 
Hallo,

hier im Forum gibt es von RobertS diese kleine Funktion um einen Zeitpunkt (DatumZeit) in Unix-Zeit zu wandeln:

Delphi-Quellcode:

function TForm1.CodeUnixDateTime(DatumZeit: TDateTime): Integer;
begin
  Result := ((Trunc(DatumZeit) - 25569) * 86400) +
            Trunc(86400 * (DatumZeit - Trunc(DatumZeit))) - 7200;
end;
Kann mir bitte jemand dabei helfen, mit WAS genau ich diese Funktion füttern muss?

Ich habe mal folgendes probiert:
Delphi-Quellcode:
Procedure DatetoUnix;
var DatumZeit: TDateTime;
begin
  DatumZeit := StrToDateTime('05.04.2007 11:13:34');
  ShowMessage(IntToStr(CodeUnixDateTime(DatumZeit)));
end;
Er gibt mir auch eine Zahl aus, allerdings hab ich keine Ahnung ob das so stimmt?

Besten Dank vorab!

jfheins 19. Mär 2009 16:28

Re: Funktion um Zeitpunkt in Unix-Zeit zu wandeln - TDateTim
 
Probier mal
Delphi-Quellcode:
Procedure DatetoUnix;
var DatumZeit: TDateTime;
begin
  DatumZeit := StrToDateTime('01.01.1970 01:30:15');
  ShowMessage(IntToStr(CodeUnixDateTime(DatumZeit)));
end;
Sollte sowas wie 5415 ergeben ;)

Tempdir 19. Mär 2009 16:33

Re: Funktion um Zeitpunkt in Unix-Zeit zu wandeln - TDateTim
 
-1785 ... scheint nicht ganz so zu stimmen ;)

Hawkeye219 19. Mär 2009 18:08

Re: Funktion um Zeitpunkt in Unix-Zeit zu wandeln - TDateTim
 
Hallo,

ich würde die Funktion Delphi-Referenz durchsuchenDateTimeToUnix aus der Unit DateUtils verwenden.

Gruß Hawkeye

Tempdir 20. Mär 2009 07:03

Re: Funktion um Zeitpunkt in Unix-Zeit zu wandeln - TDateTim
 
Funktioniert - PERFEKT - DANKE :o)

Delphi-Quellcode:
DatumZeit := StrToDateTime('01.01.1970 01:30:15');

ShowMessage(IntToStr(DateTimeToUnix(DatumZeit)));
= 5415

Jetzt fällt mir alles etwas leichter in Sachen Datumsvergleich.

DevilsCamp 20. Mär 2009 07:52

Re: Funktion um Zeitpunkt in Unix-Zeit zu wandeln - TDateTim
 
Bedenke aber, dass du hier die Zeit als UTC übergeben musst und nicht als Lokalzeit.


Delphi-Quellcode:
DatumZeit := StrToDateTime('01.01.1970 01:30:15'); // Wenn z.B. deutsche Lokalzeit gemeint ist,
ShowMessage(IntToStr(DateTimeToUnix(DatumZeit))); // dann sollte eigentlich 1815 angezeigt werden

Tempdir 20. Mär 2009 08:20

Re: Funktion um Zeitpunkt in Unix-Zeit zu wandeln - TDateTim
 
Also ich arbeite momentan nur mit dem NOW-Wert:

Delphi-Quellcode:
DateTimeToUnix(Now);
Macht das Probleme wenn meine Software auf einem amerikanischen System laufen würde? Diese "Zeitstempel" die ich da erstelle, sind nur zur Laufzeit aktiv. Also nach schließen des Programms sind alle weg.

DevilsCamp 20. Mär 2009 09:18

Re: Funktion um Zeitpunkt in Unix-Zeit zu wandeln - TDateTim
 
Solange du in deinem Programm immer nur lokale Zeiten vergleichst (und nicht CET mit PST), dann sollte das keine Probleme machen.

SirThornberry 20. Mär 2009 09:49

Re: Funktion um Zeitpunkt in Unix-Zeit zu wandeln - TDateTim
 
Die Verwendung der lokalen Zeit führt meist nur dann zu Problemen wenn die Sommer-/Winterzeitumstellung zuschlägt. Dann kann es, wenn man dies nicht bedacht hat, zu Fehlern führen weil plötzlich die Zeit zurück gestellt wurde.

DevilsCamp 20. Mär 2009 09:53

Re: Funktion um Zeitpunkt in Unix-Zeit zu wandeln - TDateTim
 
Zitat:

Zitat von SirThornberry
Die Verwendung der lokalen Zeit führt meist nur dann zu Problemen wenn die Sommer-/Winterzeitumstellung zuschlägt.

Was wir ja nächste Woche wieder haben...


[edit]
Bekomme ich als einyiger bei diesem (und nur bei diesem Thread) so ein Subject in der E-Mail:
Code:
DP :: Antwort zu "Funktion um Zeitpunkt in Unix-Zeit zu wandeln - TDateTime :: Antwort zu "Funktion um Zeitpunkt in Unix-Zeit zu wandeln - TDateTime: Antwort zu "Funktion um Zeitpunkt in Unix-Zeit zu wandeln - TDateTimeAntwort zu "Funktion um Zeitpunkt in Unix-Zeit zu wandeln - TDateTimetwort zu "Funktion um Zeitpunkt in Unix-Zeit zu wandeln - TDateTimeort zu "Funktion um Zeitpunkt in Unix-Zeit zu wandeln - TDateTimet zu "Funktion um Zeitpunkt in Unix-Zeit zu wandeln - TDateTimezu "Funktion um Zeitpunkt in Unix-Zeit zu wandeln - TDateTime "Funktion um Zeitpunkt in Unix-Zeit zu wandeln - TDateTimeFunktion um Zeitpunkt in Unix-Zeit zu wandeln - TDateTimenktion um Zeitpunkt in Unix-Zeit zu wandeln - TDateTimetion um Zeitpunkt in Unix-Zeit zu wandeln - TDateTimeon um Zeitpunkt in Unix-Zeit zu wandeln - TDateTime um Zeitpunkt in Unix-Zeit zu wandeln - TDateTimem Zeitpunkt in Unix-Zeit zu wandeln - TDateTimeZeitpunkt in Unix-Zeit zu wandeln - TDateTimeitpunkt in Unix-Zeit zu wandeln - TDateTimepunkt in Unix-Zeit zu wandeln - TDateTimenkt in Unix-Zeit zu wandeln - TDateTimet in Unix-Zeit zu wandeln - TDateTimein Unix-Zeit zu wandeln - TDateTime Unix-Zeit zu wandeln - TDateTimenix-Zeit zu wandeln - TDateTimex-Zeit zu wandeln - TDateTimeZeit zu wandeln - TDateTimeit zu wandeln - TDateTime zu wandeln - TDateTimeu wandeln - TDateTimewandeln - TDateTimendeln - TDateTimeeln - TDateTimen - TDateTime- TDateTimeTDateTimeateTimeeTimeimee?"


Alle Zeitangaben in WEZ +1. Es ist jetzt 11:15 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