C a C++ > Obecné
Datum a čas z MySQL na TDateTime
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