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() это в каком формате сделать Вам переменную на выходе.