Код для загрузки файла в приложение с помощью PhoneGap не работает

Успех преобразования из string в TDateTime с использованием VarToDateTime зависит от настроек локали в системе пользователей. Преобразование не выполняется, если эти параметры не соответствуют строке. Это причина, по которой преобразование завершается с ошибкой в ​​моей системе, а также на вашем.


Основной параметр, если вы работаете с Delphi XE6 или новее, заключается в использовании функции ISO8601ToDate(), как предложено Marc Guillot в другом ответе

Если вы работаете с Delphi 2010 или более поздней версией, вы можете использовать представленное здесь решение.

Более ранние версии, чем дроссель Delphi 2010 на «T» во входной строке и может преуспеть, если «T» удаляется или заменяется пробелом.


Используйте функцию преобразования, которая принимает параметр TFormatSetting, который можно отрегулировать в соответствии со строкой для преобразования. Эта функция представляет собой следующую перегрузку StrToDateTime() (см. документ Embarcadero )

function StrToDateTime(const S: string; const AFormatSettings: TFormatSettings): TDateTime;

Установка AFormatSettings в соответствии с строкой для преобразования гарантирует, что преобразование будет успешным:

procedure TForm3.Button1Click(Sender: TObject);
var
  fs: TFormatSettings;
  s: string;
  dt: TDateTime;
begin
  fs := TFormatSettings.Create;
  fs.DateSeparator := '-';
  fs.ShortDateFormat := 'yyyy-MM-dd';
  fs.TimeSeparator := ':';
  fs.ShortTimeFormat := 'hh:mm';
  fs.LongTimeFormat := 'hh:mm:ss';

  s := '2018-07-11T13:45:14.363';
  dt := StrToDateTime(s, fs);
end;

0
задан Abhilash M 19 January 2019 в 19:48
поделиться