голосование
PHP
Javascript
BASH
HTML
Firebird
Программы
Хостинг
Майнинг
Ресурсы
GIT
SEO
Oracle
Python
Железо
Проголосуйте за категорию!
счётчик
Яндекс.Метрика

Разница сравнение времени PHP

Часто программисты при выводе времени прибавляют некоторое количество времени. Как прибавить отрезок времени к дате PHP? Существует 2 способа. Первый способ - это разбиение строки по символу и превращение всех элементов массива в количество секунд. Второй способ заключается в превращении строки в объект времени. Второй способ сложнее и интереснее. Его и рассмотрим!


$d = '13.12.2015 11:05:44';
$newdate = date('d.m.Y H:i:s', strtotime($d." + 30 minutes"));
// создаёт 2 объекта
$dateStart = new DateTime($d);
$dateEnd = new DateTime($newdate);
// echo $newdate;
// тут происходит вычитание двух дат
$i = date_diff($dateStart, $dateEnd);
$interval = (int)$i->format('%i'); //минуты
if($interval >= 30) echo 'old date';
// посмотрите на весь объект
var_dump($interval);

У нас есть строка $d со временем. При помощи функции time() мы получим время в unix-формате. Еще прибавим 30 минут к нашей дате. Далее создаём 2 объекта при помощи конструктора new DateTime(). Эти объекты можно просмотреть при помощи функции var_dump(). Благодаря функции date_diff() получим разницу дат. Эта разница представляет из себя объект. Благодаря функции format() вы можете вывести дату в любом формате. Это очень удобно.

Хочу показать самописную функцию getStartDate() для сравнения двух дат. Логика внутри функции простая. В функции мало строк. Вам нужно передать функции 2 входных параметра (две даты). Если первое значение меньше второго, то выводится true. Если значение равны, то выводится NULL. Если первое значение больше второго, то выводится false.


/*
getStartDate()
сравнение двух дат. возвращает: TRUE, FALSE, NULL
*/
function getStartDate($d1, $d2)
{
   $data1 = new DateTime($d1);
   $data2 = new DateTime($d2);

   if($data1 < $data2)	$res = TRUE;
   elseif($data1 == $data2)	$res = NULL;
   else $res = FALSE;
   return $res;
}

// если первое значение < второго, то выводится true
$res = getStartDate('01.01.2015', '01.01.2016');
var_dump($res);
// вывод: bool(true)

Допустим, у вас задача вывести разницу сразу в днях, часах и минутах. Если не использовать ООП функции DateTime(), то будет много писанины. Вам нужно лишь расставить маркеры: format('день: %a час: %h мин: %i').


function getDateDiff($d)
{
	$datetime2 = new DateTime();    
	$datetime1 = DateTime::createFromFormat('d.m.Y H:i:s', $d);
	$interval = $datetime1->diff($datetime2);
	$param = $interval->format('день: %a час: %h мин: %i');
	return $param;	
}

echo getDateDiff('08.11.2016 10:14:53');
// вывод: день: 85 час: 23 мин: 18

Хочу показать вам как сравнить две даты по параметру. Читайте статью как сравнить две даты по параметру PHP.

просмотры: 1610, уровень: лёгкий уровень, рейтинг: 4, дата: 2015-12-26 12:58:32
проголосовать:

Комментарии:






поиск
сайты друзей
банеры
домен RU всего за 99 рублей
http://www.2domains.ru домен RU домен RU всего за 99 рублей
http://ping-admin.ru/index_5659.html мониторинг сайтов сервис мониторинга работы сайта, мониторим HTTP, HTTPS, FTP, MYSQL, PostgreSQL, POP3, SMTP, IMAP
http://trainingweb.ru/redirect/well_web_vps_kvm Аренда VPS KVM в Европе Мы предлагаем в аренду VPS серверы с выделенным IP-адресом, которые полностью эмулируют физический сервер.