При работе с датами и временем в php могут возникнуть сложности даже у опытных программистов. Для разработки сложных приложений или сайтов чаще всего требуется операции по сравнению времени, изменению его формата или сложению/вычитанию дат и часов.
Напомню, что проще всего получить текущую дату в php можно с помощью функции date(). Например, <?php echo date("Сейчас: H.i.s Дата: d.m.Y"); ?> выведет время и текущую дату.
Преобразовать формат времени
Как известно, в базе данных дата обычно записывается в формате: yyyy-mm-dd. Но при выгрузке на сайте данный формат не очень удобен для восприятия. Предлагаю рассмотреть пример ниже, который преобразует дату в нужный формат (dd-mm-yyyy):
<?php
$originalDate = "2010-03-21";
$newDate = date("d-m-Y", strtotime($originalDate));
?>
Изменение времени в php
Для этой задачи можно использовать date() и strtotime(). Последняя преобразует дату с 1970г (в виде цифр или английского текста) в метку времени Unix. Рассмотрим примеры:
Прибавит к текущей дате 1 день:
echo date('d.m.Y', strtotime(date('d.m.Y')."+1 day"));
Вычтет 2 часа, 15 минут, 10 сек:
$date=date("12:57:34");
$vr = '-2 hours -15 minutes -10 seconds';
echo date('H:i:s', strtotime($date . $vr));
Прибавит 1 недели и 2 дня и вычтет 15 минут:
$date=date("01.08.2014 12:57:34");
$vr = '+1 week +2 days -15 minutes';
echo date('d.m.Y H:i:s', strtotime($date . $vr));
Последний день месяца из даты:
$timelastday = date("t", strtotime(date("d.m.Y")));
Текущий день из даты:
$timefirstday = date("d", strtotime(date("d.m.Y")));
Увеличиваем дату на 1 месяц и выводим ее в нужном формате:
$timenext = strtotime(date("d.m.Y")." +1 month");
echo $timenextmec = date("d.m.Y", $timenext);
Сравнение времени в php
Выполняется на уже знакомой нам функции strtotime(). Рассчитаем разницу в днях между двумя датами:
$date1='16.11.2012'; $date2='11.10.2012';
echo round((strtotime($date1)-strtotime($date2))/(60*60*24));
В php есть множество возможностей по работе с датами и временем. Экспериментируйте с кодом и все получится.