AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Sprachen und Entwicklungsumgebungen Object-Pascal / Delphi-Language Delphi Problem TDate/TDataTime >zu> Integer >zu> String
Thema durchsuchen
Ansicht
Themen-Optionen

Problem TDate/TDataTime >zu> Integer >zu> String

Ein Thema von süden · begonnen am 7. Feb 2014 · letzter Beitrag vom 7. Feb 2014
Antwort Antwort
süden

Registriert seit: 20. Feb 2009
Ort: Lindau (Bodensee)
75 Beiträge
 
Delphi 2007 Professional
 
#1

Problem TDate/TDataTime >zu> Integer >zu> String

  Alt 7. Feb 2014, 12:24
Delphi-Version: 5
Hallo,

In meinem Programm werde Datumwerte als [Datum] Integer / [Std] Integer + [Min] Integer in der Datenbank gespeichert.
Das habe ich gemacht weil Datum und Zeit immer wieder zerlegt werden müssten.
Die Eingabe des Nutzers werden getrennt 1) Datum 2) von/bis als Std/Min.

Jetzt brauche ich die Stundenwerte des letzten Monats:

Code:
function DaysOfMonth(ADate:TDate; corrMonth):String;
...
    DecodeDate(ADate, Year,Month,Day);
    IncAMonth(Year,Month,Day,corrMonth);
    dtA := EncodeDate(Year,Month,1);
    dtE := EndOfAMonth(Year,Month);
dtA zeigt 41640 = 01.01.2014
dtE zeigt 41671 = 01.02.2014 - in den SQL_String kommt:

Code:
Result := ' (('+DateField+' >= '+sdtA+') AND ('+DateField+' < '+sdtE+')) ';
Ich wandele also die TDate-Werte in Strings um.
Code:
sdtE := IntToStr(Trunc(dtE));
dtE = 41671 !!!
sdtE = 41670 !!!

Es werden nur die Datumsanteile benutzt und Ganzzahlen angezeigt.

Wie kann das sein?
Welche Möglichkeiten gibt es das zu vermeiden?
Gruß süden

[Delphi 2007 Pro, WIN 7 Pro, DevEx, Fastreport, TMS]
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

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

AW: Problem TDate/TDataTime >zu> Integer >zu> String

  Alt 7. Feb 2014, 13:31
Ich hab garnicht verstanden, was du überhaupt willst und wo das Problem ist?

Die großen Zahlen sind natürlich das, was man auch in der Beschreibung zu Delphi-Referenz durchsuchenTDateTime lesen kann. (Tage seit einem bestimmten Datum)

Ich glaub jetzt hab ich's verstanden.

Wie ist denn EndOfAMonth im D2007 deklariert?
Vielleicht ist da ja ein Bug drin. Und die Delphi-Updates hast du auch installiert? (nicht daß der vermeintliche Bug schon behoben wurde)

In aktuelleren Delphis geht das zumindestens:
Delphi-Quellcode:
ShowMessage(DateToStr(41640) + ' ' + DateToStr(41671) + sLineBreak +
  DateToStr(EncodeDate(2014, 01, 01)) + ' ' + DateToStr(EndOfAMonth(2014, 01)));



Info für Andere, welche hier mitlesen:
Statt Trunc besser Delphi-Referenz durchsuchenDateOf verwenden.
Delphi-Quellcode:
function DaysOfMonth(ADate: TDate; CorrMonth: Integer): String;
...
    CDate := IncMonth(ADate, CorrMonth);
    dtA := StartOfTheMonth(CDate);
    dtE := EndOfTheMonth(CDate);
Garbage Collector ... Delphianer erzeugen keinen Müll, also brauchen sie auch keinen Müllsucher.
my Delphi wish list : BugReports/FeatureRequests

Geändert von himitsu ( 7. Feb 2014 um 13:50 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von Sherlock
Sherlock

Registriert seit: 10. Jan 2006
Ort: Offenbach
3.798 Beiträge
 
Delphi 12 Athens
 
#3

AW: Problem TDate/TDataTime >zu> Integer >zu> String

  Alt 7. Feb 2014, 15:07
Zitat:
Delphi Version:5
Das ist...übel.

Davon ab, daß die Speicherung der DateTimes als...Konstrukt auch schon übel war. Schlimm, daß sich sowas immer erst Jahre später rächt, und nicht sofort.

Sherlock
Oliver
Geändert von Sherlock (Morgen um 16:78 Uhr) Grund: Weil ich es kann
  Mit Zitat antworten Zitat
Benutzerbild von p80286
p80286

Registriert seit: 28. Apr 2008
Ort: Stolberg (Rhl)
6.659 Beiträge
 
FreePascal / Lazarus
 
#4

AW: Problem TDate/TDataTime >zu> Integer >zu> String

  Alt 7. Feb 2014, 15:32
Könnte es sein, das hier ein Mißverständnis vorliegt?

Code:
dummy:=endofamonth(2014,01);
  caption:=inttostr(trunc(dummy))+' = '+datetimetostr(dummy);
41670 = 31.01.2014 23:59:59

41671 wäre "Startofamonth" ??

Gruß
K-H
Programme gehorchen nicht Deinen Absichten sondern Deinen Anweisungen
R.E.D retired error detector
  Mit Zitat antworten Zitat
Antwort Antwort


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 08:46 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