Вход

Просмотр полной версии : Поиск вхождения даты в диапазон дат.


Sonya
21.08.2017, 19:21
Здравствуйте!
Подскажите, пожалуйста, как сделать поиск вхождения определенной даты в список диапазона дат, с выводом значения, к которому эта дата принадлежит.
Есть блоки дат, как пример два блока, всего их двенадцать:
Blok1
с 24.01.1955 по 11.02.1956
с 09.02.1967 по 29.01.1968
с 28.01.1979 по 15.02.1980
с 15.02.1991 по 03.02.1992
Blok2
с 12.02.1956 по 30.01.1957
с 30.01.1968 по 16.02.1969
с 16.02.1980 по 04.02.1981
с 04.02.1992 по 22.01.1993
Дата, например, 07.09.1992,
Как осуществить поиск диапазона, с выводом значения, в данном случае Blok2?
Понимаю, что надо использовать DatePeriod, но как искать?

laimas
21.08.2017, 19:53
На клиенте могут быть блоки из элементов, в которых есть записи. На сервере нет никаких блоков, есть данные определенного типа. Ели эти даты описаны в массиве, значит обход массива циклом с поиском по сравнению. Вот только хранить даты, с которыми приходится производить различные операции в формате d.m.Y, это плохо.

Sonya
21.08.2017, 19:58
Вот только хранить даты, с которыми приходится производить различные операции в формате d.m.Y, это плохо.
Почему?

laimas
21.08.2017, 20:18
Почему?

Потому, что дата, это строка и достаточно сравнить строки, но:

echo '04.02.1992' > '03.03.1992' ? 'Да' : 'Нет'; //не верный результат
echo '1992.02.04' > '1992.03.03' ? 'Да' : 'Нет'; //верный результат

Sonya
21.08.2017, 20:46
Так даты можно записать и в формате Y.m.d, вот только в массив, диапазоны дат, не могу понять, как записать.

laimas
22.08.2017, 09:41
Так даты можно записать и в формате Y.m.d

Нужно, причем если предполагается их использование вкупе с базой, классами даты/времени, то как Y-m-d.

только в массив, диапазоны дат, не могу понять, как записать.


Что же тут не понятного.

$arr = [
'key_1' => [
[data, data],
[data, data],
.....
],
'key_2' => [
[data, data],
[data, data],
.....
]
];

Только не "как записать в массив", а отталкиваться нужно от того, где и как хранятся эти даты у вас.

Sonya
22.08.2017, 17:47
Спасибо, чуть по-другому сделала.