PHP разница между датами в днях, добавить вычесть дни месяцы. Простая функция.
Метки: php даты, разница в днях на php, разница между датами php
Вот уж не думал, но пришлось…пара человек писали, а сейчас и сам столкнулся…Покопавшись в своих наработках, никаких готовых решений не нашел…ну именно функций, заточенных под вывод или переменную. Решил опубликовать.
Так вот, чтобы получить разницу в днях между датами на PHP использую следующую функцию:
function alex_date_dif($date1,$date2,$sep,$echo){ $a1 = explode($sep, $date1); $a2 = explode($sep, $date2); $t1 = mktime(0,0,0,$a1[1],$a1[0],$a1[2]); $t2 = mktime(0,0,0,$a2[1],$a2[0],$a2[2]); $adf = ($t2 - $t1) / 86400; if($echo==1){ echo $adf; }else{ return $adf; } }
Где входные данные, $date1 – первая (вычитаемая) дата, $date2 – основная дата, $sep – разделитель (может быть точка или дефис что угодно), и $echo – переменная, которая отвечает за вывод (если 1 – то сразу выводит, если 0 – возвращает значение в днях).
Для этой функции необходимы даты в формате дд.мм.ГГГГ (если другой формат – меняйте переменных массивов $a1 и $a2).
____________________________Есть еще более простой способ:
$datetime1 = new DateTime::createFromFormat('Ymd', $prev_close);//создаем из переменной $datetime2 = new DateTime::createFromFormat('Ymd', $prevv_close); $raznica = $datetime1->diff($datetime2);//разница $raznica = $raznica ->format('Ymd'); //тут в каком формате выход нужен
____________________________И как можно добавить, вычесть день или месяц, год:
$yest_date = DateTime::createFromFormat('Ymd', date('Ymd')); $yest_date->modify('-1 day'); $yest_date = $yest_date->format('Ymd');
Вместо date(‘Ymd’) можно вписать любую Вашу дату, или привести Вашу дату к нужному формату через strtotime()
Modify – это как изменить, +-N days, weeks, month и пр. по аналогии
->format() это в каком формате сделать Вам переменную на выходе.