Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Algorithmen, Datenstrukturen und Klassendesign (https://www.delphipraxis.net/78-algorithmen-datenstrukturen-und-klassendesign/)
-   -   Delphi mit TDateTime rechnen (https://www.delphipraxis.net/161522-mit-tdatetime-rechnen.html)

Woyzeck 7. Jul 2011 11:29

mit TDateTime rechnen
 
Hallo,
ich stehe vor dem Problem, dass mir die Datumskonvertierung aus SuperObject ein falsches TDateTime zurückgibt.
Eingabe: 01.01.2011 -> 01.01.2011 01:00:00

Ich hätte dagegen gerne ein 01.01.2011 00:00:00 zurück.

Wie kann ich jetzt von diesem TDateTime (Double) eine Stunde abziehen?

Gruß Woyzeck

himitsu 7. Jul 2011 11:32

AW: mit TDateTime rechnen
 
Delphi-Quellcode:
x := x - (1 / 24)
.
PS: In der OH steht drin, wie TDateTime aufgebaut ist und mit dieser Info hättest du das auch leicht selber ausrechnen können.

Aber eventuell ist das ja die Zeitzone?
Würde ich die Zeitzone abziehen/dazurechne


MSDN-Library durchsuchenLocalFileTimeToFileTime macht dieses.
Entweder man nutzt sowas für TDateTime oder mach rechnet es mal kurz in FileTime um.

Woyzeck 7. Jul 2011 11:39

AW: mit TDateTime rechnen
 
Danke für die schnelle Hilfe. Sommer/Winterzeit ist mir auch gerade als Idee gekommen.
Ich teste das gerade mal.

p80286 7. Jul 2011 11:40

AW: mit TDateTime rechnen
 
Das sieht sehr nach Zeitzone aus.
aber Vorsicht mit LocalFileTimetoFileTime die Frage ist, was ist "local" da könnte es durchaus Differenzen geben.

Gruß
K-H

HHennig 7. Jul 2011 11:49

AW: mit TDateTime rechnen
 
Hallo Woyzeck,

wenn du nur das Datum brauchst (also Zeit ist immer 00:00:00), dann schneide doch einfach die Nachkommastellen in TDateTime ab; diese stellen die Zeit dar. Geht mit Trunc(ADateTime).

Woyzeck 7. Jul 2011 11:57

AW: mit TDateTime rechnen
 
HHennig:
Das ist eine sehr gute Idee ! Vielen Dank!


[edit] im Übrigen scheint Sommer/Winterzeit nicht das Problem zu sein.

HHennig 7. Jul 2011 12:00

AW: mit TDateTime rechnen
 
Immer gern! :)

shmia 7. Jul 2011 13:02

AW: mit TDateTime rechnen
 
Zitat:

Zitat von HHennig (Beitrag 1110534)
Geht mit Trunc(ADateTime).

Eigentlich wäre hier die Funktion Int() anstelle von Trunc() zu verwenden.
Trunc() funktioniert zwar auch; liefert aber einen Integer zurück der sogleich in einen Double umgewandelt werden muss.
Delphi-Quellcode:
// Int returns the integer part of X; that is, X rounded toward zero.
function Int(X: Extended): Extended;

s.h.a.r.k 7. Jul 2011 15:18

AW: mit TDateTime rechnen
 
Sollte das Problem die Zeitzone sein, dann kann ich unter Delphi XE die TTimeZone-Klasse empfehlen :) Ist aber eben leider erst ab der genannten Version enthalten.


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