Bonjour,
je tente peut être de réinventer la roue , dans ce cas merci de me le signaler.
Je voudrai à partir d'une date formatée (par exemple sous la forme ddd dd mmm yyyy soit Lun. 2 Juil. 2018) récupéré la dite date
j'ai donc écrit cette fonction
si elle fonctionne
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19 function FormatedDateToDate(Format,FormatedDate : String) : TDate; var i : Word; begin // try for I := 1 to 7 do begin S:=StringReplace(S,FormatSettings.ShortDayNames[i],'',[rfReplaceAll,rfIgnoreCase]); S:=StringReplace(S,FormatSettings.LongDayNames[i],'',[rfReplaceAll,rfIgnoreCase]); end; for I := 1 to 12 do begin S:=StringReplace(S,FormatSettings.ShortMonthNames[i],FormatSettings.DateSeparator+i.ToString+FormatSettings.DateSeparator,[rfReplaceAll,rfIgnoreCase]); S:=StringReplace(S,FormatSettings.LongMonthNames[i],FormatSettings.DateSeparator+i.ToString+FormatSettings.DateSeparator,[rfReplaceAll,rfIgnoreCase]); end; Result:=StrToDateDef(S,-1); // except // end; end;
je voudrai quand même l'étendre à plus de possibilités
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10 procedure TForm15.Button1Click(Sender: TObject); var S,Format : String; ADate : TDate; begin Format:='ddd dd mmm yyyy'; S:=FormatDateTime(Format,Date); Showmessage(s); ADate:=FormatedDateToDate(Format,S); if ADate>=0 then Label1.Text:=FormatDateTime(FormatSettings.ShortDateFormat,ADate); end;
quelques tests avec d'autres format fonctionnent aussi 'dd mmm yy','dd/mm/yy','dddd dd mmmm e','dd/mm' ...
et certains formats comme 'ddd dd mmm' non (celui là c'est normal, j'ai un / en trop à la fin)
mais elles ont toutes l'obligation d'être sous la forme jour mois <an>
J'ai fait quelques tentatives avec StrToDate(string,TFormatSettings) mais sans succès (si quelqu'un peut m'expliquer)
en gros j'ai testé ceci :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7 AFormatSettings : TFormatSettings; ADate : TDate; ... AFormatSettings:=TFormatSettings.Create(); AFormatSettings.LongDateFormat:='ddd dd mmm yyyy'; ADate:=StrToDate(FormatDateTime(AFormatSettings.LongDateFormat,Date);
Partager