![]() |
Datumskonvertierung
Hallo,
Ich verzeifel jetzt hier so langsam und wende mich vorher nochmal an euch: Ich habe ein Datum in einem String im folgenden Format: Zitat:
Gibt es sonst eine Routine, mit der ich mir ohne großen Aufwand dies nach DateTime wandeln kann, od. muß ich mit einer Monatsliste und diversen Copy-Funktionieren mir jedes Element raussuchen? Danke Gruß dose |
Re: Datumskonvertierung
Nimm die überladene Version von StrToDateTime und übergebe das Format
Zitat:
|
Re: Datumskonvertierung
Hallo,
Irgendwie krieg ich's trotzdem nich hin. Es scheitert schon am Datum. Irgendeinen Tip?
Delphi-Quellcode:
gruß
var
formatSettings : TFormatSettings; begin GetLocaleFormatSettings(1033, formatSettings); // ShowMessage (DateToStr(StrToDateTime('02-Jun-2008 01:59:00', formatSettings))); formatSettings.DateSeparator := '-'; formatSettings.LongDateFormat := 'dd/mmm/yyyy'; ShowMessage (DateToStr(StrToDateTime('02-Jun-2008', formatSettings))); dose |
Re: Datumskonvertierung
Manuell zerlegen
|
Re: Datumskonvertierung
Irgendwie passen deine FormatSettings auch nicht zum Datum oder?
Delphi-Quellcode:
:gruebel:
formatSettings.DateSeparator := '-';
formatSettings.LongDateFormat := 'dd/mmm/yyyy'; |
Re: Datumskonvertierung
geht trotzdem nicht :-(
|
Re: Datumskonvertierung
Was für FormatSettings hast du denn jetzt genommen?
|
Re: Datumskonvertierung
Sowohl:
Delphi-Quellcode:
als auch
formatSettings.DateSeparator := '-';
formatSettings.LongDateFormat := 'dd-mmm-yyyy';
Delphi-Quellcode:
als auch
formatSettings.DateSeparator := '/';
formatSettings.LongDateFormat := 'dd/mmm/yyyy';
Delphi-Quellcode:
(für nur 2 stelligen Monat)
formatSettings.DateSeparator := '.';
formatSettings.LongDateFormat := 'dd.mm.yyyy'; |
Re: Datumskonvertierung
Hallo,
auch wenn man für die Ausgabe eines Datums Monatsnamen verwenden kann, so ist doch der interne Parser bei der Umwandlung von Strings alleine auf Zahlenwerte ausgelegt - lediglich die Reihenfolge von DMY wird berücksichtigt.
Delphi-Quellcode:
Ist das Datumstrennzeichen ein Blank, dann ist vielleicht dieser Thread interessant:
function StrToDateTime(s: string; fs: TFormatSettings): TDateTime;
var i, m: Integer; begin i := Pos('mmm', fs.ShortDateFormat); if i > 0 then begin m := {StrUtils.}AnsiIndexText(Copy(s, i, 3), ShortMonthNames); s := {StrUtils.}StuffString(s, i, 3, Format('%.2d', [m + Low(ShortMonthNames)])); end; Result := SysUtils.StrToDateTime(s, fs); end; procedure TDemoForm.ButtonClick(Sender: TObject); var fs: TFormatSettings; s: string; begin s := '02-Juni-2008 01:59:00'; GetLocaleFormatSettings(GetUserDefaultLCID, fs); fs.DateSeparator := '-'; fs.ShortDateFormat := 'dd/mmm/yyyy'; ShowMessage(DateTimeToStr(StrToDateTime(s, fs), fs)); end; ![]() Grüße vom marabu |
TimeStr im Format 'hh:mm:ss' in DateTime
Hier könnte auch einer meiner Routinen noch hin passen. Habe Zeitangaben in
Editfeldern die vom String in ein DateTime Format gewandelt werden*sollen.
Delphi-Quellcode:
Grüße // Martin
// Wandelt einen TimeStr im Format 'hh:mm:ss' in ein DateTime von heute
function TimeStrToDateTime( InStr : String ) : TDateTime; var I ,j : integer; LInstr : String; th,tm,ts : String; fs : TFormatSettings; begin // Zahlenbereiche auf Ziffern prüfen // j := 1; th :=''; tm :=''; ts:=''; for i := 1 to Length(InStr) do begin If ( ((ord(InStr[i]) >= 48) and (ord(InStr[i]) <= 57 )) ) then begin case j of 1 : th:=th+InStr[i]; 2 : tm:=tm+InStr[i]; 3 : ts:=ts+InStr[i]; end; end else begin if InStr[i] <> #32 then j := j +1; end; end; // Mit aktuellem Datum zusammenführen im Format: 14.10.2003, 10:26:05 LInstr := copy( FormatDateTime('dd.mm.yyyy hh:nn:ss', now) ,1,11 ) + th + ':' + tm + ':' + ts ; LInstr := trim(LInstr); // Datums Zeit format festlegen fs.DateSeparator := '.'; fs.TimeSeparator := ':'; fs.ShortDateFormat := 'dd.mm.yyyy hh:nn:ss'; // String in DatumsZeitFormat wandeln try Result := StrToDateTime( LInstr, fs ); except Result := StrToDateTime('01.01.2000 00:00:01', fs ); end; end; begin showmessage( DateTimeToStr( TimeStrToDateTime( '15:30:10' ))); end; |
Alle Zeitangaben in WEZ +1. Es ist jetzt 10:27 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 by Thomas Breitkreuz