Как проверить, есть ли 29 февраля между двумя временными метками?
$date_from = '2007-06-01'; $date_to = '2013-05-30';
Я знаю, что в этом диапазоне есть 2 раза feb-29, но как я могу это проверить?
Я хочу посчитать дни между ними, но високосные дни не учитываются.
Это будет проходить через годы, но это еще проще, когда вы найдете високосный год, потому что следующий будет через 4 года и т. Д.
$date_from = strtotime('2007-06-01'); $date_to = strtotime('2013-05-30'); for($year=$date_from; $year<=$date_to; $year=strtotime('next year', $year)) { echo date('Y', $year); echo date('L', $year) ? 'Leap year' : 'Not leap year'; }
Но я думаю, вы можете просто проверить, равен ли год 'Y'
равномерно на 4.
Проблема у меня была, я хотел найти, если 29 февраля существовал в меньшем диапазоне дат. Он предполагает, что не более двух лет. Это мое решение для этого:
$startDate = strtotime('2015-10-01 00:00:00'); $endDate = strtotime('2016-09-30 23:00:00'); $feb29StartYear = mktime(0, 0, 0, 2, 29, date('Y', $startDate)); $feb29EndYear = mktime(0, 0, 0, 2, 29, date('Y', $endDate)); if( (date('L', $startDate) && $startDate < $feb29StartYear) || (date('L', $endDate) && $endDate > $feb29EndYear)) { //We have a leap day //some logic here }
Просто подумал, что это может быть полезно для кого-то другого.