C a C++ > Obecné

Datum a čas z MySQL na TDateTime

(1/7) > >>

hlucheucho:
Ahoj,

potřebuji datum a čas ve tvaru "2014-04-25 13:59:28" převést na TDateTime. Zkoušel jsem použít:

--- Kód: ---TFormatSettings fs;
TDateTime dt;

GetLocaleFormatSettings(GetUserDefaultLCID(), fs);
fs.DateSeparator = '-';
dt = StrToDateTime(UnicodeString(radek[0]), fs);  //radek[0] obsahuje datum a cas prijaty z DB

--- Konec kódu ---

Při volání StrToDateTime obdržím vyjímku EConvertError s infirmací, že "2014-04-25 13:59:28" není platné datum a čas. C++ Builder XE5.

hu

pepak:
Ne že by nešlo zkonstruovat formát datumu tak, aby ti to StrToDateTime zvládl, ale já osobně se tedy radši držím starého dobrého "rozdělit string na jednotlivé komponenty, ty pomocí StrToInt převést na číslo a následně je pospojovat do TDateTime pomocí EncodeDate+EncodeTime".

hlucheucho:
Zdrojový řetězec je *char, realizace tvého postupu vypadá takto:

--- Kód: ---sscanf(radek[0], "%d%*c%d%*c%d%*c%d%*c%d%*c%d", &rok, &mes, &den, &hod, &min, &sek);
dt = TDateTime(rok, mes, den, hod, min, sek, 0);

--- Konec kódu ---

Děkuji za pomoc.

hu

Mi.Chal.:

--- Citace: pepak  30-07-2014, 11:15:39 ---Ne že by nešlo zkonstruovat formát datumu tak, aby ti to StrToDateTime zvládl, ale já osobně se tedy radši držím starého dobrého "rozdělit string na jednotlivé komponenty, ty pomocí StrToInt převést na číslo a následně je pospojovat do TDateTime pomocí EncodeDate+EncodeTime".

--- Konce citace ---

Já radši použiji něco na konverzi, kam jde zadat i ten formát dat. Ale jestli to leze z db, tak by to snad mělo vracet rovnou v odpovídajícím typu a ne ve stringu...

pepak:

--- Citace: Mi.Chal.  30-07-2014, 17:55:26 ---Ale jestli to leze z db, tak by to snad mělo vracet rovnou v odpovídajícím typu a ne ve stringu...
--- Konce citace ---
Vždyť píše, že to neleze z databáze, ale z MySQL...

Navigace

[0] Seznam témat

[#] Další strana

Přejít na plnou verzi