проверка метки времени, если 10 минут назад

#php #date

#php #Дата

Вопрос:

У меня есть данные в текстовом файле, сохраненные с использованием date("Y-m-d h:i:s", strtotime(" 2 minutes")) , которые мне нужно проверить, было ли это 10 минут назад. Я пытаюсь выполнить следующий код, но он ничего не печатает, даже если прошло более 10 минут.

   $now = date("Y-m-d h:i:s", strtotime("now"));
  if($now > strtotime($old_data))
       echo 'expired!';
  

Комментарии:

1. Преобразуйте их во временные метки, а затем проверьте, прошло ли более 600 секунд после старой временной метки.

2. $now = strtotime(date("Y-m-d h:i:s", strtotime("now"))); или, скорее всего if (strtotime($now) > strtotime($old_data))

3. Что в `$old_data? Можете ли вы опубликовать код, который ее устанавливает?

4. strtotime возвращает числовую метку времени, но date возвращает дату и время, которые выглядят как YYYY-MM-DD hh:mm:ss . Нет смысла сравнивать их напрямую.

Ответ №1:

вы сравниваете форматированную дату с отметкой времени, которая объясняет, почему ничего не работает

здесь:

 $now = strtotime("-10 minutes");

if ($now > strtotime($old_data) {
  echo 'expired!';
}
  

Ответ №2:

Вы должны изменить одно из следующих:

$now = strtotime(date("Y-m-d h:i:s", strtotime("now")));

или

if (strtotime($now) > strtotime($old_data))

Я пойду на второй. Вы сравниваете метку времени с датой, поэтому вы не удовлетворяете условию if() .

Кроме того, вы также можете использовать time() , если вас беспокоит только текущая временная метка.

$now = time();

или

 $now = date("Y-m-d h:i:s", strtotime("now")); // Remove this line

if(time() > strtotime($old_data)) // Change $now with time()