Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Programmieren allgemein (https://www.delphipraxis.net/40-programmieren-allgemein/)
-   -   ISO 8601 Datum vergleichen (https://www.delphipraxis.net/203776-iso-8601-datum-vergleichen.html)

DieDolly 22. Mär 2020 21:41

ISO 8601 Datum vergleichen
 
Wie vergleicht man am besten ein iso8601 Datum?
TDateTimes konvertiere ich vorher immer in Timestamps und habe dann was zum Rechnen.

Luckie 22. Mär 2020 21:43

AW: ISO 8601 Datum vergleichen
 
Warum nicht, wenn es funktioniert?

DieDolly 22. Mär 2020 21:44

AW: ISO 8601 Datum vergleichen
 
Das ist ein Int64. Ich wüsste ohnehin nicht wie man es sonst vergleichen sollte. Ich dachte nur es gibt eine vernünftigere Methode dafür.

Uwe Raabe 22. Mär 2020 21:48

AW: ISO 8601 Datum vergleichen
 
Wenn die Werte als String vorliegen, warum dann nicht direkt die Strings vergleichen? Das Format ist ja extra so aufgebaut, daß es dies ermöglicht. Das ist auf jeden Fall schneller als eine vorherige Konvertierung.

DieDolly 22. Mär 2020 21:49

AW: ISO 8601 Datum vergleichen
 
Es liegt als Int64 vor. Der Vergleich soll keinen allgemeinen Unterschied festellen, sondern welcher der beiden Werte älter oder neuer ist.

Uwe Raabe 22. Mär 2020 22:20

AW: ISO 8601 Datum vergleichen
 
Wenn es als Int64 vorliegt, wie ist dann die binäre Darstellung des Datums? ISO 8601 beschreibt ein reines Textformat.

DieDolly 22. Mär 2020 22:22

AW: ISO 8601 Datum vergleichen
 
Von binären Darstellungen habe ich keine Ahnung. Ich verstehe nicht einmal die Frage.
Wenn man das nicht als Int64 darstellen darf, wie soll man dann prüfen welcher davon neuer ist?

Redeemer 22. Mär 2020 22:38

AW: ISO 8601 Datum vergleichen
 
Warum konvertierst du TDateTime in Timestamp? Man kann auch TDateTime vergleichen, die korrekte Art und Weise ist mit DateUtils.

himitsu 22. Mär 2020 22:40

AW: ISO 8601 Datum vergleichen
 
Direkte Vergleiche der gespeicherten Ausgangswerte ist zu 99.9999999% immer schneller, als eine vorherige Umrechnung, bei jedem einzelnen Wert/Vergleich.

Ausnahme bei Anzahl an Vergleiche, welche die Anzahl der Werte stark überschreite. (alles mit allem Vergleichen, Sortieren usw.)
Aus diesem Grund legen Datenbanken auch einen Index an, in dem die Daten in einem optimaleren Format vorliegen.

z.B. einen Wert in einer Liste suchen und überall erst umrechnen zu müssen ist natürlich langsamer, als wenn die Daten bereits in einem "optimalen" Format vorliegen, bzw, vorher umgewandelt wurden. (z.B. Integer bzw. Int64 anstatt vieler langer Strings ... ein orinaler Vergleich gegenüber dem Vergleich vieler kleiner Chars pro Wert)

Uwe Raabe 22. Mär 2020 22:45

AW: ISO 8601 Datum vergleichen
 
Zitat:

Zitat von DieDolly (Beitrag 1460329)
Von binären Darstellungen habe ich keine Ahnung. Ich verstehe nicht einmal die Frage.
Wenn man das nicht als Int64 darstellen darf, wie soll man dann prüfen welcher davon neuer ist?

Die Frage geht doch auf ISO 8601 und das ist ein Textformat für Datum und Uhrzeit. Mit Int64 hat das gar nichts zu tun. Wenn du also sagst, daß du ISO 8601 Daten als Int64 hast, dann ergibt diese Aussage erstmal keinen Sinn.

Weiterhin ist das ISO 8601 Format bewusst so aufgebaut, daß ein direkter Stringvergleich möglich ist.

Vielleicht wäre jetzt ein guter Zeitpunkt deinen bisherigen Code zu zeigen?


Alle Zeitangaben in WEZ +1. Es ist jetzt 10:26 Uhr.
Seite 1 von 2  1 2      

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