PHP. Сравнение дат
Данный материал предоставлен сайтом
PacificSky.Ru исключительно в ознакомительных целях. Администрация не несет ответственности за его содержимое.
Если у вас есть 2 даты и нужно высчитать разницу между ними, то данный рецепт должен быть вам интересен.
Начиная с php версии 5.2 появился класс DateTime.
Для начала если ваши даты вам даны в строковом представлении, нужно конвертировать их в тип DateTime.
Пример:
$date2 = new DateTime("15.10.2015 12:15:00");
Результат:
object(DateTime)#1 (3) {
["date"]=>
string(26) "2015-10-15 12:15:00.000000"
["timezone_type"]=>
int(3)
["timezone"]=>
string(10) "US/Pacific"
}
Результат является лишь только примером. В вашем случае может быть другая временная зона и другой часовой пояс.
А теперь давайте представим, сто нам нужно узнать сколько времени прошло с (15.10.2015 12:15:00) до текущего дня и времени.
Для этого создадим две переменных с датами в виде строк.
$date1 ="15.10.2015 12:15:00";
$date2 = "now";
Переменная $date1 является датой от которой требуется произвести отсчет.
Переменная $date2 - текущая дата. Задана как "now". (Когда создан экземпляр класса DateTime и его параметром задан "now". В результате будет создан объект текущей даты)
Результат:
object(DateTime)#1 (3) {
["date"]=>
string(26) "2017-10-11 04:04:05.390067"
["timezone_type"]=>
int(3)
["timezone"]=>
string(10) "US/Pacific"
}
У нас есть 2 даты, которые мы конвертировали в формат DateTime.
$date1 ="15.10.2015 12:15:00";
$date2 = "now";
$dateTime1 = new DateTime($date1);
$dateTime2 = new DateTime($date2);
Для сравнения дат используется метод diff экземпляра класса DateTime.
var_dump($dateTime1->diff($dateTime2));
На этом все. Наш код:
<?php
$date1 ="15.10.2015 12:15:00";
$date2 = "now";
$dateTime1 = new DateTime($date1);
$dateTime2 = new DateTime($date2);
var_dump($dateTime1->diff($dateTime2));
Результат:
object(DateInterval)#3 (16) {
["y"]=>
int(1)
["m"]=>
int(11)
["d"]=>
int(25)
["h"]=>
int(15)
["i"]=>
int(54)
["s"]=>
int(21)
["f"]=>
float(0.128707)
["weekday"]=>
int(0)
["weekday_behavior"]=>
int(0)
["first_last_day_of"]=>
int(0)
["invert"]=>
int(0)
["days"]=>
int(726)
["special_type"]=>
int(0)
["special_amount"]=>
int(0)
["have_weekday_relative"]=>
int(0)
["have_special_relative"]=>
int(0)
}
Результат говорит нам о том, что начиная с первой даты прошел один год, одиннадцать месяцев, двадцать пять дней, пятнадцать часов, пятьдесят четыре минуты и двадцать одна секунда. Так же в результат будет выведено общее количество дней. days - 726.
Посетители, находящиеся в группе Гости, не могут оставлять комментарии к данной публикации.