Сравнение даты ("Y-m-d h:i:s");


Как я могу сделать условное утверждение, например, если дата ("Y-m-d h:i:s"); более чем через 30 секунд после даты ("Y-m-d h:i:s");.

Ранее я использовал что-то вроде даты ("Y-m-d h:i:s"); <дата ("Y-m-d h:i:s"); +30, однако это, похоже, не работает.

Помочь?

Author: Sam, 2010-06-20

4 answers

Использовать strtotime() чтобы преобразовать их в время UNIX.

Например:

if(strtotime($date2) - strtotime($date1) > 30) {
    // $date2 is more than 30 seconds after $date1
}

Или

if(abs(strtotime($date2) - strtotime($date1)) > 30) {
    // $dates are more than 30 second apart
}
 10
Author: Felix Kling, 2010-06-20 12:36:40

Используйте strtotime() для преобразования обеих дат в метку времени unix, затем добавьте требуемое количество секунд ко второму и выполните сравнение целых чисел.

 2
Author: bluebrother, 2010-06-20 12:38:14

Вместо этого используйте unixtime. Просто преобразуйте вашу дату ("Y-m-d h:i:s"); в дату ("U") или просто время (). strototime() может помочь вам в этом. Он показывает время в секундах с эпохи Unix (1 января 1970 года 00:00:00 по Гринвичу). Тогда этот метод $unixtime +30 также будет работать нормально;)

 1
Author: Vladimiroff, 2010-06-20 12:36:54

Похоже, вы пытаетесь сравнить поля даты базы данных (например, mysql DATETIME). Используйте функции даты и времени систем баз данных для сравнения значений дат (например, DATE_ADD() или + и с простыми < или > в MySQL).

 1
Author: Progman, 2010-06-20 12:57:39