Intereting Posts
Проверьте, существуют ли файлы с абсолютным и относительным путем codeigniter mysql left join include select Как узнать, пришел ли запрос от flash swf? XOR-шифр в Java и PHP: разные результаты Как отправить URL-адрес в параметре маршрута? Запрос пароля командной строки в PHP Как обратиться к public_html корневому файлу, используя include, после того, как вы перейдете к одной файловой директории из public_html CodeIgniter с фатальной ошибкой PHPExcel не может переопределять класс IOFactory Получение имен параметров из запроса SOAP с расширением PHP SOAP? Снимок экрана с div с html2canvas. Отправлено в php, сохранено: поврежденное изображение Zend SOAP-сервер WSDL URI с проверкой подлинности HTTP Pagination продолжает показывать ту же часть данных SQL Установка Xdebug для PHP на Ubuntu с помощью XAMPP __callStatic не обрабатывает отсутствующие статические вызовы Изменение относительного URL-адреса на абсолютный URL-адрес

Поиск дней между двумя временными метками unix в php

Хей, у меня есть события, содержащие базу данных. Есть 2 поля «начало» и «конец», они содержат отметки времени. Когда администратор вводит эти даты, у них есть только возможность установить день, месяц, год. Поэтому мы имеем дело только с марками, содержащими дни, месяцы, годы, а не часы, минуты, секунды (часы, минуты и секунды – 0,0,0).

У меня есть событие со стартовым временем 1262304000, а время окончания – 1262908800. Они конвертируются в 1 января 2010 года и 8 января 2010 года. Как я могу получить все дни между этими отметками времени? Я хочу быть в состоянии вернуться 2 января 2010 (1262390400), 3 января 2010 (1262476800) .. полностью до конца штампа. Эти события могут пересекаться в разные месяцы, например, с 28 мая по 14 июня.

Есть идеи, как это сделать?

Вам просто нужно вычислить количество секунд между двумя датами, а затем разделить, чтобы получить дни:

$numDays = abs($smallestTimestamp - $biggestTimestamp)/60/60/24; 

Затем вы можете использовать цикл for для получения дат:

 $numDays = abs($smallestTimestamp - $biggestTimestamp)/60/60/24; for ($i = 1; $i < $numDays; $i++) { echo date('Y m d', strtotime("+{$i} day", $smallestTimestamp)) . '<br />'; } 

Опять же, если вы не знаете, какая временная метка самая маленькая, вы можете использовать функцию min () (второй аргумент в strtotime).

Я думаю, что быстрое решение этого вопроса – вычесть сумму дней в секундах от end_stamp до тех пор, пока вы не попадете в start_tag.

 //1 day = 86400 seconds 

Я бы построил массив дней для использования позже.

EDIT (пример)

 $difference = 86400; $days = array(); while ( $start_time < $end_time ) { $days[] = date('M j Y', $end_time); $end_time -= $difference; } 

Это должно охватывать любые временные рамки, даже если это за несколько месяцев.

Попробуй это:

 while($date_start <= $date_end) { echo date('M d Y', $date_start) . '<br>'; $date_start = $date_start + 86400; } 

Надеюсь это поможет !

  **This is a very simple code for find days hours minutes and seconds in php** $dbDate = strtotime("".$yourbdDate.""); // Database date $endDate = time(); // current time $diff = $endDate - $dbDate; /// diffrence $days = floor($diff/86400); /// number of days $hours = floor(($diff-$days*86400)/(60 * 60)); //// number of hours $min = floor(($diff-($days*86400+$hours*3600))/60);///// numbers of minute $second = $diff - ($days*86400+$hours*3600+$min*60); //// secondes if($days > 0) echo $days." Days ago"; elseif($hours > 0) echo $hours." Hours ago"; elseif($min > 0) echo $min." Minute ago"; else echo "Just second ago"; 

Что-то вроде этого?

 $day = $start; while ($day < $end) { $day += 86400; echo $day.' '.date('Ym-d', $day).PHP_EOL; } 

Кстати, 1262304000 – 31 декабря, а не 1 января.

получить разницу между двумя датами и разделить ее на 86400. abs (($ date1 – $ date2) / 86400) даст необходимый результат

 $d1=mktime(22,0,0,1,1,2007); $d2=mktime(0,0,0,1,2,2007); echo "Hours difference = ".floor(($d2-$d1)/3600) . "<br>"; echo "Minutes difference = ".floor(($d2-$d1)/60) . "<br>"; echo "Seconds difference = " .($d2-$d1). "<br>"; echo "Month difference = ".floor(($d2-$d1)/2628000) . "<br>"; echo "Days difference = ".floor(($d2-$d1)/86400) . "<br>"; echo "Year difference = ".floor(($d2-$d1)/31536000) . "<br>"; 

http://www.plus2net.com/php_tutorial/date-diff.php

http://www.phpf1.com/tutorial/php-date-difference.html

 $daysInBetween = range($startTs, $endTs, 86400); $secondDay = date('M d Y', $daysInBetween[1]); /* $thirdDay = date('M d Y', $daysInBetween[2]); ... */ 

Обратите внимание, что функция range() включена.