Список дат, определенных набором правил - PullRequest
0 голосов
/ 29 мая 2020

Мне нужно создать форму, в которой пользователь может ввести набор правил и вернуть список дат, соответствующих этим правилам.

Например:

'Первый день декабря этого года '=> 2020-12-01' Первый понедельник мая этого года '=> 2020-05-04

Мне удалось добиться этого, используя DateTime и указав относительную дату:

$ordinal = 'first';
$unit = 'day';
$month = 'december';

$date = new DateTime($ordinal . ' ' . $unit . ' of ' . $month . ' this year' );

Порядковый номер, единица измерения и месяц в настоящее время выбираются с помощью раскрывающихся меню в интерфейсе.

Проблема, с которой я сталкиваюсь, заключается в том, что несколько дат могут соответствовать правилам. Например:

«Первые выходные в декабре этого года» должно возвращаться 2020-12-05 и 2020-12-06. «Каждые выходные в марте» должно возвращать дату каждой субботы и воскресенья в течение марта.

Метод, который я использовал для отдельных дат, очевидно, не работает. При изменении моего unit на «выходные» я получаю следующее сообщение об ошибке:

Fatal error: Uncaught Error: DateInterval::__construct() expects exactly 1 parameter, 0 given

Я смотрел DateInterval, но сомневаюсь, что это то, что мне нужно. Любая помощь будет принята с благодарностью.

1 Ответ

0 голосов
/ 03 июня 2020

Я наткнулся на RRUles, которые позволяют мне установить ряд правил для генерации дат, которые им соответствуют. Это помогло мне сгенерировать даты для правил, с которыми я работаю.

Вот пара ссылок для всех, кому может быть интересно:

https://github.com/jakubroztocil/rrule

https://github.com/rlanvin/php-rrule

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...