Сравните даты в PHP - PullRequest
       0

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

1 голос
/ 25 февраля 2011

Я пытаюсь создать скрипт на PHP, который обнаружит, что время обновления записи (исходя из symfony как объекта datetime) меньше часа от времени, другими словами, если запись была обновлена ​​в последний час

Вот код, который у меня есть:

$recordDate = $slideshow->getDateTimeObject('updated_at');
$nowDate = new DateTime();
var_dump($showDate < $nowDate);

Однако, это показывает, только если обновленное время было раньше

Ответы [ 2 ]

7 голосов
/ 25 февраля 2011

Чтобы узнать, является ли $ recordDate более свежим, чем час назад, вместо того, чтобы сравнивать его с текущей датой, вам нужно сравнить его с DateTime, который соответствует нашему прошлому.

Вы захотите что-то вроде этого:

if ($recordDate >= $oneHourAgo) {
    // do something
}


Если вы используете PHP> = 5.3 , вы можете использовать метод DateTime::sub, чтобы вычесть один час из вашего $nowDate DateTime.

Например, сначала получить текущую дату:

$oneHourAgo = new DateTime();
var_dump($oneHourAgo);

А затем вычтите один час:

$oneHourAgo->sub(DateInterval::createFromDateString('1 hour'));
var_dump($oneHourAgo);

И вот результат, который я получаю:

object(DateTime)[1]
  public 'date' => string '2011-02-25 21:03:32' (length=19)
  public 'timezone_type' => int 3
  public 'timezone' => string 'Europe/Paris' (length=12)

object(DateTime)[1]
  public 'date' => string '2011-02-25 20:03:32' (length=19)
  public 'timezone_type' => int 3
  public 'timezone' => string 'Europe/Paris' (length=12)


При работе с PHP 5.2 вам необходимо использовать DateTime::modify.

Здесь тоже сначала создадим текущую дату:

$oneHourAgo = new DateTime();
var_dump($oneHourAgo);

И затем измените его:

$oneHourAgo->modify('-1 hour');
var_dump($oneHourAgo);

Конечно, это даст вам точно такой же вывод, как и первое решение; -)

1 голос
/ 26 февраля 2011

Я бы отказался от создания другого объекта DateTime и использовал бы DateTime :: getTimestamp () и strtotime ()

if($recordDate->getTimestamp() >= strtotime("-1 hour")) {
    //do stuff
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...