Подтвердить что ты не робот

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

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

4b9b3361

Ответ 1

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

Пример:

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

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

Ответ 2

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

$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 фактически возвращает общее количество своего типа (в этом случае дни). Все остальные предназначены для отображения форматирования времени. Я продлил это, чтобы на самом деле работать.