Still don't know why it fails so randomly, so i fixed it this way...
function UT_StrToDate(str: string): TDateTime;
var frmstg: TFormatSettings;
begin
//GetLocaleFormatSettings(0, frmstg);
frmstg.DateSeparator := '-';
frmstg.ShortDateFormat := 'yyyy-mm-dd';
frmstg.TimeSeparator := '-';
frmstg.LongTimeFormat := 'hh-nn';
if not TryStrToDateTime(str, Result, frmstg) then
Result := Now();
end;
It'n not really the same behavior i need, but for now it's ok.