AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

TDate enthält Uhrzeit?

Ein Thema von bwolf · begonnen am 29. Aug 2012 · letzter Beitrag vom 30. Aug 2012
Antwort Antwort
Seite 1 von 3  1 23      
bwolf

Registriert seit: 17. Jan 2006
368 Beiträge
 
Delphi 2009 Professional
 
#1

TDate enthält Uhrzeit?

  Alt 29. Aug 2012, 10:39
Hi Leute,

ich habe eine Prozedur mit einem Parameter TDate.
Dieser Prozedur übergebe ich einen TDateTime Wert.
Wenn ich nun innerhalb dieser Prozedur den TDate-Wert im Debugger anschaue, enthält dieser immernoch den Uhrzeit-Anzeil - warum ist das so?
Wenn TDate auch die Uhrzeit entält, warum gibt es dann TDate und TDateTime?
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.624 Beiträge
 
Delphi 12 Athens
 
#2

AW: TDate enthält Uhrzeit?

  Alt 29. Aug 2012, 10:42
Es gibt auch noch TTime, aber alle 3 sind vom Typ double.
Detlef
"Ich habe Angst vor dem Tag, an dem die Technologie unsere menschlichen Interaktionen übertrumpft. Die Welt wird eine Generation von Idioten bekommen." (Albert Einstein)
Dieser Tag ist längst gekommen
  Mit Zitat antworten Zitat
Lemmy

Registriert seit: 8. Jun 2002
Ort: Berglen
2.380 Beiträge
 
Delphi 10.3 Rio
 
#3

AW: TDate enthält Uhrzeit?

  Alt 29. Aug 2012, 10:42
Schau mal an wie TDate definiert ist:

TDate = type TDateTime; das ist also nur ein Alias von TDateTime. Und die Datums- und Zeittypen sind letztlich Doubles:

  TDateTime = type Double; wobei die Zahl vor dem Komma die Tage und das nach dem Komma die Uhrzeit des angegebenen Tages darstellt.

Grüße
  Mit Zitat antworten Zitat
Benutzerbild von s.h.a.r.k
s.h.a.r.k

Registriert seit: 26. Mai 2004
3.159 Beiträge
 
#4

AW: TDate enthält Uhrzeit?

  Alt 29. Aug 2012, 10:42
Ich denke, dass es Vollständigkeithalber der Fall ist. TDate und TDateTime sind beide vom Typ Extended und enhalten eben auch die Zeit. Bei TDate wird aber dann wohl nur die Nachkommastelle nicht einfach abgeschnitten, sondern beibehalten. Wäre ja sonst jedes Mal ein Mehraufwand das abzuschneiden. Was jedenfalls hinter dem Komma steht ist für Methoden, die mit TDate arbeiten dann egal, denn es ist ja nur das Datum interessant und dafür sind die Stellen für dem Komma gedacht.
»Remember, the future maintainer is the person you should be writing code for, not the compiler.« (Nick Hodges)
  Mit Zitat antworten Zitat
bwolf

Registriert seit: 17. Jan 2006
368 Beiträge
 
Delphi 2009 Professional
 
#5

AW: TDate enthält Uhrzeit?

  Alt 29. Aug 2012, 10:46
Danke für die schnellen Antworten.
Sinnig finde ich das ganze aber nicht. Wenn ich schon explizit TDate verwende, will ich wohl auch nur das Datum haben.
Ansonsten Kann ich auch immer TDateTime verwenden wenn ich mir dann eh mit Trunc nur das Datum rausholen muss.
  Mit Zitat antworten Zitat
Daniel
(Co-Admin)

Registriert seit: 30. Mai 2002
Ort: Hamburg
13.920 Beiträge
 
Delphi 10.4 Sydney
 
#6

AW: TDate enthält Uhrzeit?

  Alt 29. Aug 2012, 10:53
Es gibt sonst auch noch die Funktion DateOf() . Macht nix anderes als Trunc(), verbessert aber (in meinen Augen) die Lesbarkeit des Codes, weil der Funktionsname sprechender ist.
Daniel R. Wolf
mit Grüßen aus Hamburg
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

Registriert seit: 9. Dez 2005
Ort: Heilbronn
39.858 Beiträge
 
Delphi 11 Alexandria
 
#7

AW: TDate enthält Uhrzeit?

  Alt 29. Aug 2012, 10:53
da der Typ der selbe ist, müsste der Trunc bei jedem Schriebzugriff durchgeführt werden, und nicht nur wenn die Nachkommastelln stören
Markus Kinzler
  Mit Zitat antworten Zitat
Benutzerbild von Bernhard Geyer
Bernhard Geyer

Registriert seit: 13. Aug 2002
17.196 Beiträge
 
Delphi 10.4 Sydney
 
#8

AW: TDate enthält Uhrzeit?

  Alt 29. Aug 2012, 10:54
TDate(time) basiert auf as Windows OLE DateTime-Format:

http://www.fxcodebase.com/documents/...p/oledate.html
Windows Vista - Eine neue Erfahrung in Fehlern.
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu
Online

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.063 Beiträge
 
Delphi 12 Athens
 
#9

AW: TDate enthält Uhrzeit?

  Alt 29. Aug 2012, 11:59
Wie schon erwähnt wurde, sind diese 3 Typen (TDateTime, TDate und TTime) intern nur Double, welche Datum und Uhrzeit enthalten können.
Diese Typen besitzen untereinander (leider) keine Konvertierungsfunktionen, welche z.B. Datum oder Zeit entfernen.
Es sind also reine Informationstypen, welche dem "Programmierer" mitteilen welche Inhalte er dafür vorgesehn hat, aber es mußt nicht nur das darin enthalten sein.

Delphi-Referenz durchsuchenTrunc/Delphi-Referenz durchsuchenDateOf oder Delphi-Referenz durchsuchenFrac/Delphi-Referenz durchsuchenTimeOf wurden nun auch schon genannt.

PS: Es gibt auch den atTimePciker, welcher Property ala .Date und .Time enthält, wo man auch glatt vergessen hatte (weiß jetzt nicht ob's inzwischen mal behoben wurde) darin auf diese Zeitbereiche einzuschränken, so daß man bei .Time auch das Date mit drin hatte.


Was man machen könnte, wären eigene Typen für die Date/Time-Behandlung (ein Double/TDateTime in einem Record), wo über Operatoren entsprechende Umwandlungen und Fehlermeldungen (z.B. beim Versuch einen TTime an einen TDate zuzuweisen) implementiert sind.

Oder man nutzt die schon fertigen Typen wie z.B. TTimeSpan .
Neuste Erkenntnis:
Seit Pos einen dritten Parameter hat,
wird PoSex im Delphi viel seltener praktiziert.
  Mit Zitat antworten Zitat
Benutzerbild von Uwe Raabe
Uwe Raabe
Online

Registriert seit: 20. Jan 2006
Ort: Lübbecke
11.453 Beiträge
 
Delphi 12 Athens
 
#10

AW: TDate enthält Uhrzeit?

  Alt 29. Aug 2012, 12:30
Es gibt schon einen Unterschied. Deklariert man eine Methode á la (var: Value: TDate) , so kann man keinen TDateTime als Parameter übergeben, da die Typen nicht übereinstimmen.
Uwe Raabe
Certified Delphi Master Developer
Embarcadero MVP
Blog: The Art of Delphi Programming
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 3  1 23      


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 15:39 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