Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi String "yyyy-mm-dd hh:mm:ss" in DateTime wandeln (https://www.delphipraxis.net/15670-string-yyyy-mm-dd-hh-mm-ss-datetime-wandeln.html)

Steffen 2. Feb 2004 14:36


String "yyyy-mm-dd hh:mm:ss" in DateTime wandeln
 
Hallo!

Ich habe einen Datums-Zeit-String im Format: "yyyy-mm-dd hh:mm:ss" und möchte den nun in ein DateTime-Wert konvertieren.
Ich habe nun schon einige Datumskonvertierungs-Methoden versucht, aber ich komme nicht zum richtigen Ergebnis!

Wäre nett, wenn jemand einen Lösungsvorschlag posten könnte.

Am besten wäre sowas:

Delphi-Quellcode:
var
  DateTime : TDateTime;
begin
  DateTime := XXX('2004-02-02 14:53:49');
end;
Gruß,
Steffen

mirage228 2. Feb 2004 14:38

Re: String "yyyy-mm-dd hh:mm:ss" in DateTime wande
 
guck ma nach FormatDateTime

mfG
mirage228

Steffen 2. Feb 2004 14:39

Re: String "yyyy-mm-dd hh:mm:ss" in DateTime wande
 
FormatDateTime liefert einen String zurück...

Schubi 2. Feb 2004 14:51

Re: String "yyyy-mm-dd hh:mm:ss" in DateTime wande
 
Na dann schau dir mal DecodeDate und EncodeDate an :mrgreen:

Stanlay Hanks 2. Feb 2004 14:52

Re: String "yyyy-mm-dd hh:mm:ss" in DateTime wande
 
Zitat:

Zitat von Steffen
FormatDateTime liefert einen String zurück...

Hi. und StrToDateTime() liefert einen DateTime Wert zurück :wink:

Man liest sich, Stanlay :hi:

Steffen 2. Feb 2004 14:57

Re: String "yyyy-mm-dd hh:mm:ss" in DateTime wande
 
bei
Delphi-Quellcode:
function StrToDateTime(const S: string): TDateTime; overload;
haut das mit der Formatierung nicht so ganz hin...

dann gibt's da die Funktion
Delphi-Quellcode:
function StrToDateTime(const S: string; const FormatSettings: TFormatSettings): TDateTime; overload;
...kennt sich jemand mit TFormatSettings aus?

Michael Leyhe 2. Feb 2004 15:23

Re: String "yyyy-mm-dd hh:mm:ss" in DateTime wande
 
HI

Der normale Befehl ist strtodatetime oder datetimetostr.
Meine Anmerkung ist aber das jenachdem was du mit der Zeit machen willst auf das Betriebssystem achten solltest!

Das heutige Datum lautet bei Win XP 02.02.2004 bei Win NT aber 02.02.04 :thuimb:

Wie es bei den anderen Betriebssystemen wie Linux oder einem anderen Windows aussieht weis ich nicht.

Steffen 2. Feb 2004 16:15

Re: String "yyyy-mm-dd hh:mm:ss" in DateTime wande
 
Die variierende Jahreszahldarstellung ist für mich nicht relevant, da ich immer eine vierstellige Jahreszahl als Ausgangsstring habe... trotzdem Danke.

Kann mir keiner ein Beispiel eines TFormatStrings für 'yyyy-mm-dd hh:mm:ss' geben?

Gruß,
Steffen

Luckie 2. Feb 2004 17:09

Re: String "yyyy-mm-dd hh:mm:ss" in DateTime wande
 
Zitat:

Zitat von Michael Leyhe
Das heutige Datum lautet bei Win XP 02.02.2004 bei Win NT aber 02.02.04

Ich bin mir ziemlich sicher, dass man es bei NT sich auch vierstellig anzeigen lassen kann, man muss es ur einstellen.

Steffen 6. Feb 2004 12:54

Re: String "yyyy-mm-dd hh:mm:ss" in DateTime wande
 
Ich habe das Problem jetzt so gelöst:

Delphi-Quellcode:
// Wandelt einen String im Format "yyyy-mm-dd hh:mm:ss" in DateTime-Wert um
function SQLDateTimeStringToDateTime(const strSQLDateTime : String) : TDateTime;
begin
  Result := StrToDateTime(copy(strSQLDateTime,9,2) + '.' + // Day
                          copy(strSQLDateTime,6,2) + '.' + // Month
                          copy(strSQLDateTime,0,4) + ' ' + // Year
                          copy(strSQLDateTime,12,8))      // Time
end;
Kennt jemand einen schnelleren/besseren Weg?

Gruß,
Steffen

Luckie 6. Feb 2004 14:17

Re: String "yyyy-mm-dd hh:mm:ss" in DateTime wande
 
Geht das nicht?
Delphi-Quellcode:
procedure TForm1.Button1Click(Sender: TObject);
var
  s : String;
  MyDateTime: TDateTime;
begin
  s := DateTimeToStr(now);
  MyDateTime := StrToDateTime(s);
  s := DateTimeToStr(MyDateTime);
  Showmessage(s);
end;
Kommt sogar mit meinem eingestellten Datumsformat yyyy-MM-dd hh:mm klar.

Steffen 6. Feb 2004 15:24

Re: String "yyyy-mm-dd hh:mm:ss" in DateTime wande
 
Zitat:

Kommt sogar mit meinem eingestellten Datumsformat yyyy-MM-dd hh:mm klar.
Wo ist das denn hier eingestellt?


Ich habe ein DatumZeit-Wert als String (yyyy-mm-dd hh:mm:ss) und daraus soll ein TDateTime-Wert werden...

Ich kann deinen Vorschlag nicht nachvollziehen..!? :freak:

Gruß,
Steffen

Luckie 6. Feb 2004 15:34

Re: String "yyyy-mm-dd hh:mm:ss" in DateTime wande
 
In der Systemsteuerung.

Mit deiner Methode dürftest du arge Probleme haben, wenn das Datum mal nicht so aussieht.

Steffen 6. Feb 2004 15:36

Re: String "yyyy-mm-dd hh:mm:ss" in DateTime wande
 
Ich hole das Datum aus einer mySQL-DB... es sieht immer so aus.
Ich bekomme eher Probleme damit die Systemsteuerung so umzustellen...

Luckie 6. Feb 2004 15:40

Re: String "yyyy-mm-dd hh:mm:ss" in DateTime wande
 
Zitat:

Zitat von Steffen
Ich bekomme eher Probleme damit die Systemsteuerung so umzustellen...

An der sollst du ja auch gar nicht rumstellen. Ich verbitte es mir, dass Programme an meinen Systemeinstellungen rumfuschen.

Steffen 6. Feb 2004 15:42

Re: String "yyyy-mm-dd hh:mm:ss" in DateTime wande
 
Muss ich das nun noch verstehen...? :gruebel:

Luckie 6. Feb 2004 15:49

Re: String "yyyy-mm-dd hh:mm:ss" in DateTime wande
 
Ja. Dein Programm hat am Datumsformat, welches ich in der Systemsteuerung eingestellt habe, nicht szu ändern.

Aber wenn du sicher sein kannst, dass das Datum imme rin der Form vorliegt auch noch in 5 Jahren, dann kannst du es natürlich so machen.


Alle Zeitangaben in WEZ +1. Es ist jetzt 19:28 Uhr.

Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz