Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 21.08.2017, 19:21
Профессор
Отправить личное сообщение для Sonya Посмотреть профиль Найти все сообщения от Sonya
 
Регистрация: 07.07.2016
Сообщений: 281

Поиск вхождения даты в диапазон дат.
Здравствуйте!
Подскажите, пожалуйста, как сделать поиск вхождения определенной даты в список диапазона дат, с выводом значения, к которому эта дата принадлежит.
Есть блоки дат, как пример два блока, всего их двенадцать:
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, но как искать?
Ответить с цитированием
  #2 (permalink)  
Старый 21.08.2017, 19:53
Профессор
Отправить личное сообщение для laimas Посмотреть профиль Найти все сообщения от laimas
 
Регистрация: 14.01.2015
Сообщений: 12,989

На клиенте могут быть блоки из элементов, в которых есть записи. На сервере нет никаких блоков, есть данные определенного типа. Ели эти даты описаны в массиве, значит обход массива циклом с поиском по сравнению. Вот только хранить даты, с которыми приходится производить различные операции в формате d.m.Y, это плохо.
Ответить с цитированием
  #3 (permalink)  
Старый 21.08.2017, 19:58
Профессор
Отправить личное сообщение для Sonya Посмотреть профиль Найти все сообщения от Sonya
 
Регистрация: 07.07.2016
Сообщений: 281

Сообщение от laimas Посмотреть сообщение
Вот только хранить даты, с которыми приходится производить различные операции в формате d.m.Y, это плохо.
Почему?
Ответить с цитированием
  #4 (permalink)  
Старый 21.08.2017, 20:18
Профессор
Отправить личное сообщение для laimas Посмотреть профиль Найти все сообщения от laimas
 
Регистрация: 14.01.2015
Сообщений: 12,989

Сообщение от Sonya
Почему?
Потому, что дата, это строка и достаточно сравнить строки, но:

echo '04.02.1992' > '03.03.1992' ? 'Да' : 'Нет'; //не верный результат 
echo '1992.02.04' > '1992.03.03' ? 'Да' : 'Нет'; //верный результат
Ответить с цитированием
  #5 (permalink)  
Старый 21.08.2017, 20:46
Профессор
Отправить личное сообщение для Sonya Посмотреть профиль Найти все сообщения от Sonya
 
Регистрация: 07.07.2016
Сообщений: 281

Так даты можно записать и в формате Y.m.d, вот только в массив, диапазоны дат, не могу понять, как записать.
Ответить с цитированием
  #6 (permalink)  
Старый 22.08.2017, 09:41
Профессор
Отправить личное сообщение для laimas Посмотреть профиль Найти все сообщения от laimas
 
Регистрация: 14.01.2015
Сообщений: 12,989

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

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

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


Только не "как записать в массив", а отталкиваться нужно от того, где и как хранятся эти даты у вас.
Ответить с цитированием
  #7 (permalink)  
Старый 22.08.2017, 17:47
Профессор
Отправить личное сообщение для Sonya Посмотреть профиль Найти все сообщения от Sonya
 
Регистрация: 07.07.2016
Сообщений: 281

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



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Как в flatpickr выделить определённые дни и диапазон дат? drkrol Общие вопросы Javascript 18 04.10.2018 11:15
Имеет ли смысл хранить даты в отдельной таблице? frutality Серверные языки и технологии 7 15.08.2013 19:39
Поиск вхождения подстроки в массиве строк. FINoM Общие вопросы Javascript 8 27.02.2011 11:53
как в datepicker задать диапазон дат во время выполнения скрипта. Yurik jQuery 0 23.02.2011 12:19