PHP разница между датами в днях, добавить вычесть дни месяцы. Простая функция.

18 Февраль 2014

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


 


© 2006 - 2024, Александр Сергеев