Intereting Posts
Почему класс корзины codeigniter не позволяет использовать какой-либо специальный символ в имени? Как увеличить мои «продвинутые» знания PHP дальше? (быстро) Использовать filter_var () для проверки даты? Foreach показывает только последний элемент в массиве Сортировка заголовка таблицы в порядке убывания страницы без сортировки всей таблицы базы данных WooCommerce 3.0 – скрыть информацию об изменении в заголовке продукта В magento 1.9.0.0 как можно включить подсказку с шаблоном? Вытягивание <s: variant> из подачи атома простым пирогом Обнаружение искателя php Проверьте, существует ли имя пользователя с помощью PHP Создать новую таблицу из модуля magento Действие и передача переменной для всех действий в symfony 1.4 Использование PHP $ _POST для запоминания опции в поле выбора? Как я могу реализовать единый вход (SSO) с использованием Microsoft AD для внутреннего PHP-приложения? Ошибка при использовании -> paginate () с Laravel

Проверка повторяющихся дат

Я создаю календарь на PHP, и в базе данных есть дата, скажем, 6-10-10.

Иногда я повторяю события, которые хранятся как повторяющиеся еженедельно, поэтому, если дата 6-10-10, и я повторяю событие каждые две недели с того дня (в том числе и в тот день), что является лучшим способом найти даты для каждых двух недель от 6-10-10?

Например, предположим, что дата 7-8-10, как я могу проверить, соответствует ли эта дата моим критериям?

Solutions Collecting From Web of "Проверка повторяющихся дат"

Что случилось с петлей ?! Дискретная математика 101: Как вы определяете, существует ли число? n%2==0

Как вы узнаете, есть ли дата (uh …) раз в две недели? date%2weeks==0

Бросьте в офсет, и вы получите (date-startdate)%2weeks

 $startdate = strtotime("10 June 2010"); $otherdate = strtotime("8 July 2010"); $twoweeks = strtotime("+2 weeks") - time(); if($otherdate>$startdate && (($otherdate-$startdate)%$twoweeks)==0) { // this is n * two weeks after } 

Вы можете использовать функцию DATEDIFF .

Например

 SELECT * FROM myTable WHERE ( DATEDIFF( myDate, '2007-12-30' ) % 14 ) = 0 

Если это для календаря, как насчет построения цепочки действительных дат с использованием strtotime ?

 // 10 dates every two weeks starting next thurdsay $valid_dates = array(); $date_counter = 0; $date_counter = strtotime("next thursday"); // I love being a lazy bastard! while ($i < 10) { array_push($valid_dates, $date_counter); $date_counter = strtotime("+2 weeks", $date_counter); $i++; } foreach ($valid_dates as $date) echo date("Y/m/d", $date)."<br>"; 

Вывод:

 2010/06/17 2010/07/01 2010/07/15 2010/07/29 2010/08/12 2010/08/26 2010/09/09 2010/09/23 2010/10/07 2010/10/21 

Не должно ли результат функции DATEDIFF в MySQL быть кратным 7 (для повторяющихся событий каждую неделю) или 14 (для событий, повторяющихся каждые две недели) и т. Д.?