Как проверить, не превышает ли дата в массиве $ _POST сегодняшнюю дату в PHP?

Дата для проверки следующая:

$submission_date = 12-25-2014; //The date in mm-dd-yyyy format that is to be tested against today's date

Теперь я хочу повторить сообщение об ошибке, поскольку дата содержится в переменной $submission_date это будущая дата.

Как я должен сделать это эффективно и результативно с помощью PHP?

Заранее спасибо.

0

Решение

Есть много способов сделать это (например, использовать DateTime :: createFromFormat () для контроля точного формата входных дат), но, возможно, самый простой, который подходит для примера:

$isFuture = (strtotime($submission_date) > strtotime($_POST['current_date']))

Обратите внимание, что ОП изменил вопрос. Если нужной даты для проверки нет в массиве $ _POST, просто замените strtotime($_POST['current_date']) с time() использовать текущее системное время.

Для сравнения с текущей датой, независимо от времени суток, используйте:

$today = new DateTime(date("Y-m-d"));
// $today = new DateTime("today");  // better solution courtesy of Glavić
// see http://php.net/manual/en/datetime.formats.relative.php for more info
$today_timestamp = $today->getTimestamp();
1

Другие решения

Если опубликованный формат находится в m-d-Y, то вы не можете конвертировать его в метку времени Unix напрямую с strtotime() функция, потому что это вернусь false.

Если вам нужно использовать strtotime() затем изменить формат ввода на m/d/Y простым str_replace().

С другой стороны, вы могли бы использовать DateTime класс, где вы можете напрямую сравнивать объекты:

$submission_date = DateTime::createFromFormat('!m-d-Y', $submission_date);
$today_date = new DateTime('today');

if ($submission_date > $today_date) {
echo "submission_date is in the future\n";
}

демонстрация

1

С PHP DateTime Вы можете проверить, является ли введенная дата будущей или старой.

$submission_date = DateTime::createFromFormat('m-d-Y', $submission_date);
$submission_date = $submission_date->format('Y-m-d');
$current_date    = new DateTime('today');
$current_date    = $current_date->format('Y-m-d');

if ($submission_date > $current_date)
{
echo "Future date";
}
else
{
echo "Old date";
}
0
По вопросам рекламы [email protected]