AGB  ·  Datenschutz  ·  Impressum  







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

Datumskonvertierung

Ein Thema von dose · begonnen am 26. Jun 2007 · letzter Beitrag vom 12. Jan 2017
Antwort Antwort
Seite 1 von 2  1 2      
dose

Registriert seit: 12. Jul 2006
11 Beiträge
 
#1

Datumskonvertierung

  Alt 26. Jun 2007, 08:16
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:
02-Jun-2008 01:59:00
11-Mar-2008 16:26:23
Jetzt müßte es doch eigentlich eine einfach Lösung geben, dieses Datum nach DateTime zu konvertieren, oder?
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
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

Registriert seit: 9. Dez 2005
Ort: Heilbronn
39.851 Beiträge
 
Delphi 11 Alexandria
 
#2

Re: Datumskonvertierung

  Alt 26. Jun 2007, 08:21
Nimm die überladene Version von StrToDateTime und übergebe das Format

Zitat von Delphi-Hilfe:
function StrToDateTime(const S: string; var FormatSettings: TFormatSettings): TDateTime; overload;
Markus Kinzler
  Mit Zitat antworten Zitat
dose

Registriert seit: 12. Jul 2006
11 Beiträge
 
#3

Re: Datumskonvertierung

  Alt 26. Jun 2007, 08:54
Hallo,
Irgendwie krieg ich's trotzdem nich hin. Es scheitert schon am Datum.
Irgendeinen Tip?


Delphi-Quellcode:
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)));
gruß
dose
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

Registriert seit: 9. Dez 2005
Ort: Heilbronn
39.851 Beiträge
 
Delphi 11 Alexandria
 
#4

Re: Datumskonvertierung

  Alt 26. Jun 2007, 09:13
Manuell zerlegen
Markus Kinzler
  Mit Zitat antworten Zitat
Benutzerbild von Luckie
Luckie

Registriert seit: 29. Mai 2002
37.621 Beiträge
 
Delphi 2006 Professional
 
#5

Re: Datumskonvertierung

  Alt 26. Jun 2007, 09:18
Irgendwie passen deine FormatSettings auch nicht zum Datum oder?
Delphi-Quellcode:
formatSettings.DateSeparator := '-';
formatSettings.LongDateFormat := 'dd/mmm/yyyy';
Michael
Ein Teil meines Codes würde euch verunsichern.
  Mit Zitat antworten Zitat
dose

Registriert seit: 12. Jul 2006
11 Beiträge
 
#6

Re: Datumskonvertierung

  Alt 26. Jun 2007, 09:28
geht trotzdem nicht
  Mit Zitat antworten Zitat
Benutzerbild von Luckie
Luckie

Registriert seit: 29. Mai 2002
37.621 Beiträge
 
Delphi 2006 Professional
 
#7

Re: Datumskonvertierung

  Alt 26. Jun 2007, 09:37
Was für FormatSettings hast du denn jetzt genommen?
Michael
Ein Teil meines Codes würde euch verunsichern.
  Mit Zitat antworten Zitat
dose

Registriert seit: 12. Jul 2006
11 Beiträge
 
#8

Re: Datumskonvertierung

  Alt 26. Jun 2007, 09:49
Sowohl:
Delphi-Quellcode:
formatSettings.DateSeparator := '-';
formatSettings.LongDateFormat := 'dd-mmm-yyyy';
als auch

Delphi-Quellcode:
formatSettings.DateSeparator := '/';
formatSettings.LongDateFormat := 'dd/mmm/yyyy';
als auch

Delphi-Quellcode:
formatSettings.DateSeparator := '.';
formatSettings.LongDateFormat := 'dd.mm.yyyy';
(für nur 2 stelligen Monat)
  Mit Zitat antworten Zitat
marabu

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

Re: Datumskonvertierung

  Alt 27. Jun 2007, 08:53
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:
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;
Ist das Datumstrennzeichen ein Blank, dann ist vielleicht dieser Thread interessant: Datum-String in Datetime wandeln.

Grüße vom marabu
  Mit Zitat antworten Zitat
Benutzerbild von mschaefer
mschaefer

Registriert seit: 4. Feb 2003
Ort: Hannover
2.029 Beiträge
 
Delphi XE3 Enterprise
 
#10

TimeStr im Format 'hh:mm:ss' in DateTime

  Alt 12. Jan 2017, 20:41
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:
   // 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;
Grüße // Martin
Martin Schaefer
Phaeno
  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 07:37 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