Карта сайта Kansoftware
НОВОСТИУСЛУГИРЕШЕНИЯКОНТАКТЫ
KANSoftWare

Исправление ошибки EConvertError в функции StrToDateTime в Delphi 11: возврат к пользовательским форматам

Delphi , Синтаксис , Дата и Время

Исправление ошибки EConvertError в функции StrToDateTime в Delphi 11

В последних версиях Delphi, начиная с версии 11.3, произошли изменения в работе функции StrToDateTime, которая ранее успешно обрабатывала строки с пользовательскими форматами. Теперь, при попытке преобразования строки в формат TDateTime, например, '2023-05-12 12:11:10', возникает исключение EConvertError с сообщением о том, что строка не представляет собой действительную дату и время.

Проявление проблемы

Пример кода, демонстрирующего проблему:

procedure ConvertDate;
var
  lFormatSettings: TFormatSettings;
  lDate: TDateTime;
begin
  lFormatSettings := TFormatSettings.Create();
  lFormatSettings.DateSeparator := '-';
  lFormatSettings.TimeSeparator := ':';
  lFormatSettings.ShortDateFormat := 'yyyy-mm-dd hh:nn:ss';
  lDate := StrToDateTime('2023-05-12 12:11:10', lFormatSettings);  // <-- EConvertError Exception
end;

Возможное решение

Необходимо указать только формат даты в свойстве ShortDateFormat, а формат времени - в LongTimeFormat. Вот рабочий пример:

lFormatSettings := TFormatSettings.Create();
lFormatSettings.DateSeparator := '-';
lFormatSettings.TimeSeparator := ':';
lFormatSettings.ShortDateFormat := 'yyyy-mm-dd';
lFormatSettings.LongTimeFormat := 'hh:nn:ss';

Комментарии пользователей

Некоторые разработчики отмечают, что предложенное решение не помогло им. Однако, важно отметить, что функции StrToDateTime, StrToDate и StrToTime всегда использовали ShortDateFormat и DateSeparator для парсинга даты, а также заданный формат времени и разделители для парсинга времени. В случае, если парсинг перестал работать, это может быть регрессией, которую следует сообщить в Embarcadero.

Важно также отметить, что ShortTimeFormat и LongTimeFormat не используются при парсинге времени, они применяются только для форматирования строк даты и времени. В соответствии с этим, возможно, достаточно установить ShortDateFormat в соответствии с указанным примером и оставить формат времени без изменений.

Итог

После внесения указанных изменений в настройки TFormatSettings, функция StrToDateTime должна корректно обрабатывать строки с пользовательскими форматами в Delphi 11. Если проблема сохраняется, рекомендуется обратиться в поддержку Embarcadero с подробным описанием проблемы.

Создано по материалам из источника по ссылке.

Вопрос связан с исправлением ошибки EConvertError при использовании функции StrToDateTime в Delphi 11, вызванной изменениями в работе функции, влияющими на обработку строк с пользовательскими форматами даты и времени.


Комментарии и вопросы

Получайте свежие новости и обновления по Object Pascal, Delphi и Lazarus прямо в свой смартфон. Подпишитесь на наш Telegram-канал delphi_kansoftware и будьте в курсе последних тенденций в разработке под Linux, Windows, Android и iOS




Материалы статей собраны из открытых источников, владелец сайта не претендует на авторство. Там где авторство установить не удалось, материал подаётся без имени автора. В случае если Вы считаете, что Ваши права нарушены, пожалуйста, свяжитесь с владельцем сайта.


:: Главная :: Дата и Время ::


реклама


©KANSoftWare (разработка программного обеспечения, создание программ, создание интерактивных сайтов), 2007
Top.Mail.Ru

Время компиляции файла: 2024-12-22 20:14:06
2025-02-05 15:00:18/0.0050668716430664/1