Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Neuen Beitrag zur Code-Library hinzufügen (https://www.delphipraxis.net/33-neuen-beitrag-zur-code-library-hinzufuegen/)
-   -   Time to Integer (https://www.delphipraxis.net/211661-time-integer.html)

Nine9 19. Okt 2022 15:50

Time to Integer
 
Guten Tag Community,

wie kann ich einen Datentyp 'Time' aus der DB zu einem Integer wandeln?


Grüße

Sinspin 19. Okt 2022 16:09

AW: Time to Integer
 
Hallo,

In Delphi ist ein Datumswert intern Gleitkomma. Der Ganzahlanteil sind Tage, nach dem Komma kommt alles was kürzer als ein Tag ist.
Also wird in deinem Time-Wert eine Zahl zwischen 0 und 1 stehen.
Es gibt Functionen mit denen man Datum/Zeit in Windows/Unix/whatever Datum umwandeln kann.

Allerdings wäre erstmal interessant wie der wirkliche Datentyp des Feldes ist um das es hier geht. Sonst ist hier alles nur Stochern im trüben.

KodeZwerg 19. Okt 2022 16:12

AW: Time to Integer
 
Da du recht viel zeigst wie du es machst und womit und gut beschrieben hast wofür das ganze gut sein soll,
gibts nur eine rudimentäre Antwort:
Delphi-Quellcode:
Query1.FieldByName('Time').AsInteger;
.
Frag mich aber nicht wie Du daraus wieder einen Zeitwert erhalten kannst.

juergen 19. Okt 2022 18:20

AW: Time to Integer
 
Welche Genauigkeit soll das Ergebnis haben?
Wenn Sekunden reichen, dann könnte man etwa sowas machen. Vorteil: Der Wert lässt sich auch wieder als Time zurück konvertieren.

Delphi-Quellcode:
StrToIntDef(FormatDateTime(&#8218;hh&#8216;, <dein Datntyp Time>, 0) * 3600 +
StrToIntDef(FormatDateTime(&#8218;nn&#8216;, <dein Datntyp Time>, 0) * 60 +
StrToIntDef(FormatDateTime(&#8218;ss&#8216;, <dein Datntyp Time>, 0)
Das Ergbnis wäre in Sekunden und ein Integerwert, wenn die Anzahl der Sekunden im Bereich eines Integers passen, aber dazu ist die Frage zu ungenau
Habe grad keine Möglichkeit am PC, nur über Tablet

himitsu 19. Okt 2022 18:38

AW: Time to Integer
 
Das perverse rumgestringe sollte man sich garnicht erst angewöhnen
Delphi-Referenz durchsuchenHourOf
Delphi-Referenz durchsuchenMinuteOf
Delphi-Referenz durchsuchenSecondOf, Delphi-Referenz durchsuchenSecondOfTheMinute
bzw.
Delphi-Referenz durchsuchenSecondOfTheDay
Delphi-Referenz durchsuchenMilliSecondOfTheDay
Delphi-Referenz durchsuchenSecondsBetween
usw.

Delphi-Referenz durchsuchenDateUtils
Delphi-Referenz durchsuchenSysUtils
...


für Zeiten pro Tag oder Zeitdifferenzen, kann man auch direkt rechnen,
denn Delphi-Referenz durchsuchenTDateTime ist ein Float (Double), wo im Nachkommateil die Uhrzeit steht, und vor dem Komma die Tage seit X.
Delphi-Quellcode:
Trunc(TimeOf(DT) * 24 * 60)
ergibt also die Minuten seit Mitternacht


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