06. februar 2002 - 09:08Der er
8 kommentarer og 1 løsning
StringToDate konvertering
Jeg har en datostreng som altid ser ud sådan her
06-02-02 for f.eks idag den 6.februar 2002 strengen ønskes konverteret til en TDate til dette formål har jeg brugt følgende var DatoTDate : TDate; DatoStr : String;
DatoStr := '06-02-02' //kommer ind fra en PLC via RS232 DatoTDate := StrToDate(DatoStr);
Dette fungere fint på min maskine hvor ShortDate er sat op til dd-mm-yy, nu er programmet imidlertid blevet installeret på en maskine i Sverige hvor datoformatet er yy-mm-dd, så står der pludselig 2006-02-02 i DBGridne, hvordan sikre jeg mig at det fungere på alle maskiner uanset datoformat ?
var Format: String; begin Format := ShortDateFormat; //Hent format fra lokal PC if Format <> 'dd-MM-yyyy' then //Lav det om hvis det er anderledes end det vi ønsker ShortDateFormat := 'dd-MM-yyyy';
//Din kode !
if Format <> ShortDateFormat then //Tilbage til org. hvis vi har ændret det ShortDateFormat := Format; end;
Du kan bruge StrToDateTime Den bruger såvidt jeg ved altid formatet mm/dd/yy hh:mm:ss og du kan så bruge DecodeDate på resultatet. Det kræver naturligvis at du bytter om på mm og dd og tilføjer et tilfældigt tidspunkt. Ombytning: NyFormat=copy(GlString,4,2)+'/'+copy(GlString,1,2)+'/'+copy(GlString,7,2); Husk at yy med to tal giver et årstal mellem 1900 og 1999
Ellers må du ind og læse variablen 'ShortDateFormat'
Det nemmeste er nok:
GlDateFormat := ShortDateFormat; NewDate := insert('20',DatoStr,7); (*ændrer format til 06-02-2002*) ShortDateFormat := 'dd-mm-yyyy'; (*Så er man sikker på året*) DatoTDate := StrToDate(NewDate); ShortDateFormat := GlDateFormat; (*Ændrer tilbage til det oprind.*)
Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.