Как перевести "последнее воскресенье марта" в конкретную дату?

Использую LibreOffice Calc. В таблице встречаются строки типа: "последнее воскресенье сентября" или "первая суббота марта".

Есть ли возможность перевести эти строки в конкретные даты?

Пример: "первая суббота марта" конвертируется в "06.03.21".


Ответы (1 шт):

Автор решения: MaxU

Это интересная задача, но ее решение - достаточно трудоемкий процесс, поэтому предлагаю разбить ее на части (блоки):

  1. парсинг строк, чтобы получать следующие кортежи после парсинга (на самом деле эту задачу лучше разбить на еще меньшие блоки и парсить отдельно номер, день недели и месяц в трех "подблоках"):
    • "первая суббота марта" -> (1, 6, 3)
    • "последнее воскресенье сентября" -> (-1, 7, 9)
  2. создать объект типа datetime из компонентов, полученных ранее
  3. воспользоваться решением, подобным этому

PS самым сложным блоком - будет парсинг строк.

PPS пример преобразования имени месяца в разных падежах в его порядковый номер


Дальше все просто - пытаетесь создать отдельно все блоки по отдельности и в конце связать все месте. Если у вас возникнут трудности с каким-то блоком - задавайте новые вопросы здесь. ;)

→ Ссылка