PHP Проверка, имеет ли отметка времени менее 30 минут

Я получаю список элементов из моей базы данных, каждый из которых имеет CURRENT_TIMESTAMP, который я изменил на «x минуты назад» с помощью timeago . Так что это нормально. Но проблема в том, что я также хочу «НОВЫЙ» баннер для предметов, которым меньше 30 минут. Как я могу взять сгенерированную метку времени (например: 2012-07-18 21:11:12) и сказать, если она меньше 30 минут от текущего времени, а затем эхо-маркер «NEW» на этом элементе.

Solutions Collecting From Web of "PHP Проверка, имеет ли отметка времени менее 30 минут"

Используйте strtotime («-30 минут»), а затем посмотрите, превышает ли метка времени вашей строки.

Пример:

<?php if(strtotime($mysql_timestamp) > strtotime("-30 minutes")) { $this_is_new = true; } ?> 

Я использую strtotime () дважды здесь, чтобы получить временные метки unix для вашей даты mysql, а затем снова, чтобы получить то, что отметка времени была 30 минут назад. Если временная метка с 30 минут назад больше, чем временная метка записи mysql, то она должна быть создана более 30 минут.

Попробуйте что-то вроде этого, используя PHP-объект DateTime :

 $now = new DateTime(); $then = DateTime($timestamp); // "2012-07-18 21:11:12" for example $diff = $now->diff($then); $minutes = ($diff->format('%a') * 1440) + // total days converted to minutes ($diff->format('%h') * 60) + // hours converted to minutes $diff->format('%i'); // minutes if ($minutes <= 30) { echo "NEW"; } 

Изменить: Майк прав, я забыл, что по какой-то причине только %a фактически возвращает общее количество своего типа (в этом случае дни). Все остальные предназначены для отображения форматирования времени. Я продлил это, чтобы на самом деле работать.