AGB  ·  Datenschutz  ·  Impressum  







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

Datum convert error

Ein Thema von Ajin · begonnen am 5. Jun 2007 · letzter Beitrag vom 6. Jun 2007
Antwort Antwort
Seite 1 von 2  1 2      
Ajin

Registriert seit: 23. Feb 2006
Ort: Mons
252 Beiträge
 
Delphi 2010 Professional
 
#1

Datum convert error

  Alt 5. Jun 2007, 08:00
Hallo!

Zum Thema Datum gibts ja unendlich viele Beiträge. Ich habe ein label mit folgender Caption: 05.06.2007 Diesen String wollte ich in ein gültiges Datum konvertieren um es mit einem anderen zu vergleichen. StrToDate nd EncodeDate werden hier nicht viel nüzten. StrToDate schmeisst ne Exception (ich denke wegen der 4 stelligen Jahreszahl) und Encode Date verlangt ein bestimmtes Format (yyyy,dd,mm oder so ähnlich).

Gibts da nix eleganteres? Der String ist doch im Prinzip in einem schönen Datumsformat.
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.545 Beiträge
 
Delphi 11 Alexandria
 
#2

Re: Datum convert error

  Alt 5. Jun 2007, 08:07
Zitat von Ajin:
StrToDate schmeisst ne Exception (ich denke wegen der 4 stelligen Jahreszahl)
Bei mir nicht. Vielleicht sind Deine Datumseinstellungen nicht kompatibel zu diesem String.
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
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.545 Beiträge
 
Delphi 11 Alexandria
 
#3

Re: Datum convert error

  Alt 5. Jun 2007, 08:12
Habe da mal eine etwas umständliche Lösung, die dafür aber unabhängig von den Windows-Einstellungen sein sollte.
Delphi-Quellcode:
procedure TForm1.Button1Click(Sender: TObject);
var aDate: TDate;
    aY,aM,aD: Word;
    s: string;
begin
  s := '05.12.2007';
  aD := StrToInt(Copy(s,1,Pos('.',s) - 1));
  Delete(s,1,Pos('.',s));
  aM := StrToInt(Copy(s,1,Pos('.',s) - 1));
  Delete(s,1,Pos('.',s));
  aY := StrToInt(s);
  aDate := EncodeDate(aY,aM,aD);
  ShowMessage(FormatDateTime('dd.MM.yyyy',aDate));
end;
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
Ajin

Registriert seit: 23. Feb 2006
Ort: Mons
252 Beiträge
 
Delphi 2010 Professional
 
#4

Re: Datum convert error

  Alt 5. Jun 2007, 08:22
Da werd ich mich wohl im Storchbraten üben müssen, dein Ansatz klappt Prima. Dafür vielen Dank! Nichtsdestoweniger Trotz werde ich mal prüfen, wieso mein Datumsstring solche Probleme beim Konvertieren gemacht hat.
  Mit Zitat antworten Zitat
CCRDude
(Gast)

n/a Beiträge
 
#5

Re: Datum convert error

  Alt 5. Jun 2007, 09:45
Tipp: es gibt zwei Versionen von StrToDate, der überladenen Version kannst Du ein TFormatSettings übergeben, in dem Du in Spezialfällen auch vorschreiben kannst, welches Textformat der übergebene Text hat.
  Mit Zitat antworten Zitat
Cappuccino

Registriert seit: 25. Okt 2006
68 Beiträge
 
Delphi 6 Enterprise
 
#6

Re: Datum convert error

  Alt 5. Jun 2007, 10:46
Pass auf, da kommt bald einer auf die Idee, mit englischer Datumseinstellung von Windows zu arbeiten, und dann passt die Zerlegung nicht mehr.
Ich habe die (nicht schöne) Lösung genommen und das Format mit angegeben, dann weiß der Benutzer wenigstens, wie er eingeben muss.

Gruß
Tom
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.545 Beiträge
 
Delphi 11 Alexandria
 
#7

Re: Datum convert error

  Alt 5. Jun 2007, 10:50
Zitat von Cappuccino:
Pass auf, da kommt bald einer auf die Idee, mit englischer Datumseinstellung von Windows zu arbeiten, und dann passt die Zerlegung nicht mehr.
Solange der String von einem Label kommt, über dessen Format der Programmierer (hoffentlich) die Kontrolle hat, greift dieses Argument nicht.
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
Ajin

Registriert seit: 23. Feb 2006
Ort: Mons
252 Beiträge
 
Delphi 2010 Professional
 
#8

Re: Datum convert error

  Alt 6. Jun 2007, 20:49
Wenn ich aber das Datum von HEUTE mit dem Datum von GESTERN mit DAYSBETWEEN vergleiche kommt 1 heraus. Sollte das nicht -1 lauten?
Wie kann man denn bei dem Result 1 wissen, ob das zu vergleichende Datum mit Heute GESTERN oder MORGEN war?

Beispiel:
Euer Abo läuft demnächst aus. Heute ist der 06.06.2007

Abo läuft am 07.06. aus = ihr habt noch 1 Tag um es zu nutzen
Abo läuft am 06.06. aus = Es ist heute abgelaufen (0 Tage)
Abo ist gestern ausgelaufen (05.06.) = DaysBetween liefert ebenfalls 1 Tag zurück.



Wie kann ich dem Nutzer mitteilen, dass sein Abo bereits seid 1 Tag abgelaufen ist?
  Mit Zitat antworten Zitat
marabu

Registriert seit: 6. Apr 2005
10.109 Beiträge
 
#9

Re: Datum convert error

  Alt 6. Jun 2007, 20:59
Hallo Jaimy,

nimm die Differenz und nicht den Abstand:

Delphi-Quellcode:
function RemainingDays(dt: TDateTime): Integer;
begin
  Result := Trunc(dt - Now);
end;
Gute Nacht
  Mit Zitat antworten Zitat
Ajin

Registriert seit: 23. Feb 2006
Ort: Mons
252 Beiträge
 
Delphi 2010 Professional
 
#10

Re: Datum convert error

  Alt 6. Jun 2007, 21:15
Das ist ein Argument, welches:

1. zu 100% funktionert und
2. dir eine erholsame Nachtruhe bescheren soll

Vielen Dank und gute Nacht Achim
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2      


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 20:53 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