PHP. Сравнение дат

PHP. Сравнение дат

Если у вас есть 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.
Информация
Посетители, находящиеся в группе Гости, не могут оставлять комментарии к данной публикации.
  • Яндекс.Метрика
  • Счетчик PR-CY.Rank
  • Рейтинг@Mail.ru