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

Как проверить, что дата в формате «2008-02-16 12:59:57» меньше 24 часов назад?


person stef    schedule 03.12.2009    source источник


Ответы (7)


Просто добавьте еще один ответ, используя относительные даты strtotime:

$date = '2008-02-16 12:59:57';
if (strtotime("$date +1 day") <= time()) {
    // Do something
}

Я думаю, что это делает код более читабельным.

person LiraNuna    schedule 07.12.2009

например через strtotime и time().
Разница должна быть меньше 86400 (секунд в день).

<?php
echo 'now: ', date('Y-m-d H:i:s'), "\n";
foreach( array('2008-02-16 12:59:57', '2009-12-02 13:00:00', '2009-12-02 20:00:00') as $input ) {
  $diff = time()-strtotime($input);
  echo $input, ' ', $diff, " ", $diff < 86400 ? '+':'-', "\n";
}

отпечатки

now: 2009-12-03 18:02:29
2008-02-16 12:59:57 56696552 -
2009-12-02 13:00:00 104549 -
2009-12-02 20:00:00 79349 +

только последняя дата/время теста находится менее чем в 24 часах назад.

person VolkerK    schedule 03.12.2009
comment
Это нормально (я полагаю) в случае, когда ему нужно меньше 24 ЧАСОВ. Просто имейте в виду, что не следует предполагать, что в сутках всегда 24 часа (как вы сказали в своем ответе). Если вы переходите от разницы часов к разнице дней, вам лучше использовать библиотеку DateTime. Для лучшего объяснения проблем со временем вы можете проверить эту статью: odi.ch/prog/ дизайн/datetime.php - person Carlos Lima; 03.12.2009

В Php есть функция сравнения между двумя объектами даты/времени, но я очень не очень нравится. Это может быть неточно.

Что я делаю, так это использую strtotime(), чтобы сделать временную метку unix из объекта даты, а затем сравнить ее с выводом time().

person Satanicpuppy    schedule 03.12.2009
comment
DateTime — это только PHP 5.3 и выше. - person Peter Bailey; 03.12.2009

Просто используйте это.....

if(strtotime($date_start) >= strtotime($currentDate))
{
// Your code
}
person Gaurav Gupta    schedule 16.05.2013

Может быть, так будет легче понять...

$my_date        = '2008-02-16 12:59:57';
$one_day_after  = date('Y-m-d H:i:s', strtotime('2008-02-16 12:59:57 +1 days'));

if($my_date < $one_day_after) {
echo $my_date . " is less than 24 hours ago!";
} else {
echo $my_date . " is more than 24 hours ago!";
}
person Ajie Kurniyawan    schedule 15.03.2014

Там должна быть переменная дата

$date_value = "2013-09-12";
$Current_date = date("Y-m-d"); OR $current_date_time_stamp = time();

Вы можете сравнить обе даты после преобразования даты в отметку времени, поэтому:

if(strtotime($current_date) >= strtotime($date_value)) {
 echo "current date is bigger then my date value";
}

OR

if($current_date_time_stamp >= strtotime($date_value)) {
 echo "current date is bigger then my date value";
}
person Vishnu Sharma    schedule 12.09.2013

Для этого вы можете использовать Simple PHP:

$date = new simpleDate();
echo $date->now()->subtractHour(24)->compare('2008-02-16 12:59:57')->isBefore();
person isa    schedule 30.03.2014