Я строю небольшую комбинацию классов, чтобы вычислить точную дату начала семестра. Правила определения начала семестра сводятся к следующему:
The monday of week number ## and after dd-mm-yyyy date
ie: for winter its week number 2 and it must be after the january 8th of that year
Я создаю класс ресурсов, который содержит эти данные для всех семестров (всего 4). Но теперь я столкнулся с проблемой, основанной на public holidays
. Поскольку некоторые из них могут быть в понедельник, в этих случаях мне нужно узнать дату вторника.
Проблема, над которой я сейчас работаю, заключается в следующем:
The target semester begins on or after august 30 and must be on week 35.
Я также должен учитывать государственный праздник, который случается в первый понедельник сентября.
Условие в терминах PHP следующее
if (date('m', myDate) == 9 // if the month is september
&& date('w', myDate) == 1 // if the day of the week is monday
&& date('d', myDate) < 7 // if we are in the first 7 days of september
)
Как лучше всего «сформулировать» это как условие и сохранить его в массиве?
EDIT
Возможно, я не был достаточно ясен, найти дату здесь не проблема. Фактическая проблема заключается в сохранении условия в массиве конфигурации, которое выглядит следующим образом:
$_ressources = array(
1 => array(
'dateMin' => '08-01-%',
'weekNumber' => 2,
'name' => 'Winter',
'conditions' => array()
),
2 => array(
'dateMin' => '30-04-%',
'weekNumber' => 18,
'name' => 'Spring',
'conditions' => array()
),
3 => array(
'dateMin' => '02-07-%',
'weekNumber' => 27,
'name' => 'Summer',
'conditions' => array()
),
4 => array(
'dateMin' => '30-08-%',
'weekNumber' => 35,
'name' => 'Autumn',
'conditions' => array("date('m', %date%) == 9 && date('w', %date%) == 1 && date('d', %date%) < 7")
)
);
Проблема, с которой я сейчас столкнулся, заключается в том, что мне придется использовать функцию eval()
, чего я бы не хотел.