Bonjour,
J'ai un string sous forme de '20061124' et je veux le stocker dans une date
Code:Date->Date=xxxxx("20061124");
Que vais mettre à la place des xxxxx afin de convertir mon ainsistring vers une date
Merci
Version imprimable
Bonjour,
J'ai un string sous forme de '20061124' et je veux le stocker dans une date
Code:Date->Date=xxxxx("20061124");
Que vais mettre à la place des xxxxx afin de convertir mon ainsistring vers une date
Merci
Bonsoir,
A première vue, j'aurais dis StrToDate(...)
Mais pas sur, vu la façon dont est écris la date dans ton 'String'
@ +
;)
Effectivement j'ai essayé StrToDate mais ça donne encore le même problème, je pense que le format offert par cette instruction est differente de celle du composant de la date. A priori quelle est la format accepté par l'objet Date
Ne peut on pas imaginer travailler sur la 'String' contenant la representation de la date, et extraire les parties correspondantes au jour, mois, année avec SubString(...).
Les placer temporairement dans des String séparés et reconstituer avec la chaine au bon format avec les séparations (DateSeparator).
Non ?
Je vais essayer cette idée et je vais vous répondre
La super façon de le faire rapidement en C :D
Met une date du format "20061124" au format "2006-11-24"Code:
1
2
3
4
5 char maDate[] = "20061124", nouvelleDate[] = "1999-12-31"; strncpy(nouvelleDate, &maDate[0], 4); strncpy(&nouvelleDate[5], &maDate[4], 2); strncpy(&nouvelleDate[8], &maDate[6], 2);
Salut !
Si ta chaîne d'entrée à toujours la structure "xxxxyyzz", avec xxxx =année, yy=mois, et zz=jours, qui sont valables (par exmple le mois =40, est invalide...etc), donc ceci peut être une solution pour ton problème :
Bonne chanceCode:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29 #include <StrUtils.hpp> #include <DateUtils.hpp> TDateTime MaStructureToDateTime(AnsiString DateTime_String) { TDateTime Date; try { AnsiString Year=LeftStr(DateTime_String,4);//Prendre les 4premiers carractères(année) AnsiString Month=LeftStr(RightStr(DateTime_String,4),2);//Prendre le 5,et 6eme carractère(mois) AnsiString Day=RightStr(DateTime_String,2);//Les deux derniers carractère(Jours) Date=EncodeDateTime((Word)StrToInt(Year),(Word)StrToInt(Month),(Word)StrToInt(Day),0,0,0,0); } catch(...) { ShowMessage("Erreur de l'encodage de la date"); } return (Date);//L'encoder dans une variable de type TDateTime, sans prendre en compte l'heure, minute, secondes } void __fastcall TForm1::Button1Click(TObject *Sender) { TDateTime Var=MaStructureToDateTime("20061124"); ShowMessage(Var.DateString()); }
Bonjour,
la solution que j'ai opté finalement pour ce problème est la suivante:
j'ai une date '20061214' et je veux l'afficher dans le composant date:
Code:
1
2
3
4
5
6
7
8
9
10
11
12 AnsiString DateString; AnsiString Jour ; AnsiString Mois ; AnsiString Annee ; AnsiString Date; Jour = DateString.SubString(7,2); Mois = DateString.SubString(5,2); Annee = DateString.SubString(1,4); Date= Jour +"."+ Mois +"."+ Annee ; Ma_date->Date = StrToDate(Date);