Л А Б О Р А Т О Р И Я

актуальных

РЕШЕНИЙ


обработка дат на PHP - TEST

подсчет количества вторников в интервале между датами

В общем пакете тестов полученном от одной компании был тест с реализацией на PHP подсчета количества вторников между двумя датами.


Описание задачи:

Тест date PHP

Первое, что пришло в голову - найти ближайшие вторники к начальной и конечной дате и поделить полученный интервал дней между ними на 7. Но тут возникает одна проблема, если даты в пределах периода меньше 7 дней. Появляется необходимость делать дополнительную проверку. На больших интервалах, возможно такой вариант и будет наименее затратным по ресурсам, но на коротких интервалах скорее всего нет. Одно из условий реализации - оптимальный алгоритм, без уточнения фактора оптимальности. Будем считать, что оптимальным должен быть код.


Решение задачи:

result

Тут стоит сделать несколько пояснений:

  • Есть необходимость определения начальной и конечной даты задаваемого периода, потому что пользователь может их вводить по своему усмотрению. (см. строки 11-17)
  • функция getCountTuesday (см. строки 19-26) - является рекурсивной и вызывает сама себя для подсчета вторников, пока последний подсчитываемый вторник не выйдет за границы заданного периода.
  • применяемая для обработки дат функция idate преобразовывает задаваемые даты в число, чтобы была возможность производить сравнение дат.

Удачи в разработке!



другие материалы: