#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()