Delphi-PRAXiS
Seite 2 von 2     12   

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi StrToDate (https://www.delphipraxis.net/114882-strtodate.html)

mkinzler 2. Jun 2008 12:48

Re: StrToDate
 
Zerlege den String und erzeuge daraus das Datum

Hawkeye219 2. Jun 2008 13:03

Re: StrToDate
 
Hallo,

vielleicht hilft dieser Beitrag.

Gruß Hawkeye

API 2. Jun 2008 13:52

Re: StrToDate
 
Zitat:

Zitat von Hawkeye219
Hallo,

vielleicht hilft dieser Beitrag.

Gruß Hawkeye

Unter D6 gibt es, wie bereits geschrieben, leider keine überladene StrToDate() Funktion.

marabu 2. Jun 2008 14:30

Re: StrToDate
 
Hallo,

das Prinzip bleibt das gleiche:

Delphi-Quellcode:
function StrToDate(s: string): TDateTime;
var
  iMonth, nMonth: Integer;
  sMonth: string;
begin
  iMonth := Pos('mmm', ShortDateFormat);
  if iMonth > 0 then
  begin
    sMonth := Copy(s, iMonth, 3);
    nMonth := Low(ShortMonthNames) + AnsiIndexText(sMonth, ShortMonthNames);
    Str(nMonth:2, sMonth);
    s := StuffString(s, iMonth, 3, sMonth);
  end;
  Result := SysUtils.StrToDate(s);
end;
Grüße vom marabu

raiguen 2. Jun 2008 15:19

Re: StrToDate
 
Zitat:

Zitat von Delphi-OH
Beschreibung

Mit StrToDate kann ein String mit einer Datumsangabe geparst werden. Enthält S kein gültiges Datum, wird eine EConvertError-Exception ausgelöst.

Der String muss aus zwei oder drei Zahlen bestehen, die durch das in der globalen Variable DateSeparator bzw. deren TFormatSettings-Entsprechung definierte Zeichen voneinander getrennt sind. Die Reihenfolge von Tag, Monat und Jahr wird von der globalen Variable ShortDateFormat bzw. deren TFormatSettings-Entsprechung bestimmt (mögliche Kombinationen sind M/T/J, T/M/J und J/M/T).

Also wird dir nichst naderes übrig bleiben, als den von marabu vorgeschlagenen Weg zu gehen und den Datumstring entsprechend zu bearbeiten, dass dieser für StrToDate()-Funktion zureichend ist (also NUR Zahlen!)..

API 2. Jun 2008 17:39

Re: StrToDate
 
@marabu. Danke! Das funktioniert endlich.

Verwende die Funktion nun so:

Delphi-Quellcode:
function StrToDateTime(s: string): TDateTime;
var
  iMonth, nMonth: Integer;
  sMonth: string;
begin
  iMonth := Pos('mmm', ShortDateFormat);
  if iMonth > 0 then
  begin
    sMonth := Copy(s, iMonth, 3);
    nMonth := Low(ShortMonthNames) + StrUtils.AnsiIndexText(sMonth, ShortMonthNames);
    Str(nMonth:2, sMonth);
    s := StuffString(s, iMonth, 3, sMonth);
  end;
  Result := SysUtils.StrToDateTime(s);
end;

procedure TForm1.Button1Click(Sender: TObject);
var
  DateStr: string;
  dtDateTime: TDateTime;
Begin
  DateStr := '23-Mai-2008 17:01';
  DateSeparator := '-';
  TimeSeparator := ':';
  ShortDateFormat := 'dd.mmm.yyyy';
  dtDateTime := StrToDateTime(DateStr);
end;


Alle Zeitangaben in WEZ +1. Es ist jetzt 03:33 Uhr.
Seite 2 von 2     12   

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