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.
Trunc/
DateOf oder
Frac/
TimeOf 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
.