Javascript-форум (https://javascript.ru/forum/)
-   Серверные языки и технологии (https://javascript.ru/forum/server/)
-   -   Поиск вхождения даты в диапазон дат. (https://javascript.ru/forum/server/70236-poisk-vkhozhdeniya-daty-v-diapazon-dat.html)

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

Цитата:

Сообщение от laimas (Сообщение 462249)
Вот только хранить даты, с которыми приходится производить различные операции в формате d.m.Y, это плохо.

Почему?

laimas 21.08.2017 20:18

Цитата:

Сообщение от Sonya
Почему?

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

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

Цитата:

Сообщение от Sonya
Так даты можно записать и в формате Y.m.d

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

Цитата:

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

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

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


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

Sonya 22.08.2017 17:47

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


Часовой пояс GMT +3, время: 06:17.