Delphi. Преобразовать строку в дату используя полный/длинный формат
Есть задача написать парсер текстовых логов стороннего приложения, код и настройки которого менять нельзя.
К сожалению, приложение использует формат даты из настроек Windows. Его разработчик сообщил, что вызывает WinAPI-функцию GetDateFormat.
Мой парсер запускается на той же машине в тот же день, то есть получить те же настройки Windows легко.
На одной из машин формат установлен «d MMMM yyyy 'г.'», то есть в том месте, где должна быть дата я получаю подстроку вида «19 января 2023 г.».
Функция System.SysUtils.StrToDateTime падает в ошибку, так как ожидает увидеть строку из цифр, пробелов и FormatSettings.DateSeparator, но не букв.
Даже если я сам разложу эту строку на составляющие, то есть сложность с тем, что «января» = 1, ведь в FormatSettings.LongMonthNames название месяца хранится в именительном падеже («Январь»).
Вероятно названия месяцев в родительном падеже можно получить через WinAPI GetLocaleInfo с флагом LOCALE_RETURN_GENITIVE_NAMES
Вопрос: Есть ли в стандартной библиотека Delphi или в WinAPI функция преобразования строки в дату в соответствии с LongDateFormat, то есть функция обратная к WinAPI GetDateFormat?