Интересные задачи

Автор sokol92, 8 декабря 2021, 16:38

0 Пользователи и 1 гость просматривают эту тему.

mikekaganski

#15
Распознавание дат - это отдельная песня. Что касается D/M/YYYY в FormulaLocal, тут Calc ожидает разделители дат (точнее, маски), указанные в Date Acceptance Patterns. В дополнение к датам ISO 8601, которые распознаются независимо от настроек. Ещё распознаются даты, соответствующие настроенной локали (скажем, для ru-RU это разделитель - точка, порядок D.M.Y) - даже если эти маски убрать из Date Acceptance Patterns. Ну, и ещё строки типа "29 декабря". Но это, конечно, не относится к предмету пункта 9.2 :)

А вообще распознавание и преобразование строк в значения в ЛО (и в частности в Calc) - это сильное колдунство. В первом приближении им занимается класс SvNumberFormatter сотоварищи (но, скажем, для Basic есть свои поместные волшебные дополнения).
С уважением,
Михаил Каганский

sokol92

#16
9.3. Тексты, "похожие" на локализованные даты.

В данном разделе мы рассматриваем только присвоение свойства FormulaLocal.
Если текст интепретируется как дата, то обе программы меняют числовой формат ячейки на соответствующий. К величайшему сожалению, LO до сих пор использует форматы с 2-х значным годом (эта проблема известна).

В Excel интерпретация текста как даты производится на основе региональных настроек (их можно получить с помощью свойства Application.International).

В Calc на основании локали числового формата ячейки можно получить "дополнительные" шаблоны для ввода даты c помощью метода getDateAcceptancePatterns (параметр - локаль).

Пользователь может указать свои шаблоны для ввода дат с помощью параметра Language Settings / Languages / Date acceptance patterns. Понятно, что шаблоны пользователя применяются при вводе данных в ячейки, имеющие локаль по умолчанию. Для каких еще локалей (заданных в форматах ячеек) эти шаблоны действуют - вопрос. Например, я задал дополнительный шаблон "D~M". Шаблон действует для локали по умолчанию, не действует для "en_US", "ge_GE" (изменено).

Если указано название месяца, то действует то же правило, что в п. 9.2.
Calc понимает название месяца в именительном и родительном падеже, Excel - только в именительном.
Владимир.