Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi Datumsformatierung Englisches und Deutsches Format (https://www.delphipraxis.net/147133-datumsformatierung-englisches-und-deutsches-format.html)

Freiwilderer 2. Feb 2010 13:09


Datumsformatierung Englisches und Deutsches Format
 
Hallo,

und zwar habe ich das Problem, dass ich ein Feld (in einem array) habe, in dem ein Datum steht, entweder im Deutschen oder im Englischen Datumsformat.
Ich will allerdings nach dem Datum sortieren, was natürlich nicht funktioniert, wenn die nicht das selbe format haben.

jetzt würde ich beim füllen des arrays gern das datum so formatieren, dass es immer das selbe format hat.

Code:
var
Datum : TDateTime;
..

FormatDateTime(dxMemData.FieldByName('GueltigAb').AsString, Datum);
das hat leider überhaupt keine auswirkungen ... und das versteh ich nich so recht

hat jemand eine idee, was da falsch läuft ?

mfg
Freiwilderer

DeddyH 2. Feb 2010 13:13

Re: Datumsformatierung Englisches und Deutsches Format
 
Zitat:

Zitat von Freiwilderer
..., dass ich ein Feld (in einem array) habe, in dem ein Datum steht, ...

Als String oder TDateTime?

Freiwilderer 2. Feb 2010 13:15

Re: Datumsformatierung Englisches und Deutsches Format
 
danke für die schnelle antwort

das arrayfeld is ein string

DeddyH 2. Feb 2010 13:19

Re: Datumsformatierung Englisches und Deutsches Format
 
Ließe sich das ohne großen Aufwand in TDate ändern? Ansonsten wäre das u.U. eine aufwändige Geschichte, da man das Format ja zunächst ermitteln müsste.

Freiwilderer 2. Feb 2010 13:21

Re: Datumsformatierung Englisches und Deutsches Format
 
weiß nich genau, ob sich das ohne probleme ändern lassen würde
geb mir 10 minuten, ich probiers kurz aus ..

Freiwilderer 2. Feb 2010 13:31

Re: Datumsformatierung Englisches und Deutsches Format
 
...
jetzt hab ich nich richtig nachgedacht
das problem is ja, dass ich die daten aus feldern mit strings in das array packe
und, wenn da nicht das richtige datum in das datums array feld geschrieben wird, funktionierts natürlich genau so wenig




falls ich gleich nicht mehr antworte is das keine böse absicht, sondern schneefallbedingter feierabend ...
mir wurd grad gesagt, dass wir uns das noch 10 minuten angucken und sonst die zelte abbrechen ;)

edit: und whao, es waren genau 10 minuten

DeddyH 2. Feb 2010 13:34

Re: Datumsformatierung Englisches und Deutsches Format
 
Nun komm ich nicht ganz mit. Du befüllst ein Array of String? Aus welcher Quelle denn?

Freiwilderer 2. Feb 2010 13:42

Re: Datumsformatierung Englisches und Deutsches Format
 
also
ich habe ein Grid.
in diesem grid befinden sich Daten aus einer Datenbank. das feld Datum hat das englische format, wird aber im deutschen angezeigt.
jetzt füge ich aus der zwischenablage neue werte zusätzlich in das grid ein. (die daten aus der zwischenablage haben das deutsche format)
dann werden die daten im grid in ein array gespeichert und dieses array nach bestimmten kriterien sortiert.
anschließend werden die daten verglichen, evtl. verändert und dann wieder in das grid geschrieben.

das ganze ist eine plz liste, mit den feldern plzvon, plzbis, gültig ab
und ich möchte beim einfügen von daten aus der zwischenablage prüfen, ob es überschneidungen bei den plz bereichen gibt (deswegen das sortieren usw im array)

DeddyH 2. Feb 2010 13:52

Re: Datumsformatierung Englisches und Deutsches Format
 
Und in der DB ist das Feld auch ein String? Das wäre blöde.

Freiwilderer 2. Feb 2010 13:54

Re: Datumsformatierung Englisches und Deutsches Format
 
nee,
in der db is das feld ein Date
das problem, das ich hab is einfach, dass ich auf den editvalue des grids zugreifen muss, um das array zu füllen und das is nunmal ein string

DeddyH 2. Feb 2010 14:01

Re: Datumsformatierung Englisches und Deutsches Format
 
Dann schien der Ansatz mit FormatDateTime ja gar nicht so schlecht gewesen zu sein (zumindest, wenn ich das Ganze halbwegs richtig verstehe).
Delphi-Quellcode:
var
Datum : string;
..

Datum := FormatDateTime('dd.mm.yyyy',dxMemData.FieldByName('GueltigAb').AsDate);

p80286 2. Feb 2010 16:56

Re: Datumsformatierung Englisches und Deutsches Format
 
Wie wäre es denn mit dem ISO-Datum?

YYYY-MM-DD

Das ist etwas sortierfreundlicher. (ISO 8601)

Gruß
K-H

DeddyH 3. Feb 2010 08:32

Re: Datumsformatierung Englisches und Deutsches Format
 
Noch besser fände ich es allerdings, die Daten gleich sortiert aus der DB abzufragen, der Rest ist ja nur noch eine Frage der Darstellung.

Freiwilderer 3. Feb 2010 08:58

Re: Datumsformatierung Englisches und Deutsches Format
 
hi
haben gestern tatsächlich abgebrochen hier
und haben bis jetzt den weg wieder freigeschippt ;)
ich versuch das gleich mal mit dem datumsformat und meld mich kurz, obs geklappt hat
danke schonmal

ich kann das allerdings nich sortiert aus der DB holen, weil ja nich alle daten, die ich vergleiche in der DB sind ;)
ich zieh daten aus der DB, füge neue daten aus der zwischenablage ein und sortiere dann...

bis denn

Freiwilderer 3. Feb 2010 09:09

Re: Datumsformatierung Englisches und Deutsches Format
 
ok
das klappt nich
problem is nämlich, dass ich kein .asDate machen kann, weil ich kein DB Feld sondern ein editvalue in einem grid hab
werd wohl einfach prüfen müssen, ob in dem string in . oder ein - drin is und entsprechend drauf reagieren ^^

Freiwilderer 3. Feb 2010 09:15

Re: Datumsformatierung Englisches und Deutsches Format
 
so gehts
... nich grad schön, aber es klappt wenigstens ;)

Delphi-Quellcode:
        if pos('.',cxgPLZGebietDBTableView1.GetColumnByFieldName('GueltigAb').EditValue) > 0 then
         recTmpGrid[dxMemData.RecNo - 1].GueltigAb   := cxgPLZGebietDBTableView1.GetColumnByFieldName('GueltigAb').EditValue
        else
         begin
          recTmpGrid[dxMemData.RecNo - 1].GueltigAb  := copy(cxgPLZGebietDBTableView1.GetColumnByFieldName('GueltigAb').EditValue,9,2) + '.' +
                                                         copy(cxgPLZGebietDBTableView1.GetColumnByFieldName('GueltigAb').EditValue,6,2) + '.' +
                                                         copy(cxgPLZGebietDBTableView1.GetColumnByFieldName('GueltigAb').EditValue,1,4)
         end;
mfg

Freiwilderer

[edit=mkinzler]Code-Tag durch Delphi-Tag ersetzt Mfg, mkinzler[/edit]

Sharky 3. Feb 2010 10:05

Re: Datumsformatierung Englisches und Deutsches Format
 
Hai Freiwilderer,

ich möchte Dir heute eine super neue Funktion des Forums vorstellen.

Diese nennt sich Edit.

Damit hast Du die Möglichkeit einen Beitrag denn Du geschrieben hast um neue Informationen zu ergänzen ohne einen neuen Beitrag erzeugen zu müssen (was im allgemeinen als "pushen" bezeichnet wird). :!: :stupid:

Freiwilderer 3. Feb 2010 10:16

Re: Datumsformatierung Englisches und Deutsches Format
 
hi
die funktion gibts schon länger, ich kenne sie auch (wie man an einem beitrag von gestern erkennt)
allerdings waren es ja eher statusmeldungen, die eine zeitliche verfolgung durchaus sinnvoll machen.

außerdem hatte ich ja drauf gehofft evtl. noch neue anregungen zwischendurch zu bekommen, weshalb es gut war, dass zwischendurch erkennbar war, dass sich in dem thread was getan hat.

und außerdem bin ich jetzt ja fertig und die lösung is durchaus n eigenen beitrag wert, finde ich

also lassen wird das jetzt, denn jetzt wurde dieser thread wirklich zweimal total unsinnig gepusht :D

bis dann

mkinzler 3. Feb 2010 10:40

Re: Datumsformatierung Englisches und Deutsches Format
 
Danke für die Aufklärung, wie du dein Handeln siehst. Für uns ist es Pushen, und das ist nicht erwünscht!


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