Дата, которую необходимо проверить, следующая:
$submission_date = 12-25-2014; //The date in mm-dd-yyyy format that is to be tested against today date
Теперь я хочу повторить сообщение об ошибке, поскольку дата, содержащаяся в переменной $submission_date
является датой в будущем.
Как я должен делать это эффективно и эффективно с помощью PHP?
Заранее спасибо.
Если опубликованный формат находится в mdY
, то вы не можете преобразовать его в unix timestamp напрямую с strtotime()
функции 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";
}
Многие способы сделать это (например, использовать 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();
С помощью PHP DateTime вы можете проверить, будет ли входная дата будущей или старой по отношению к todate.
$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";
}
timestamp
и сравнить полученнуюtimestamp
с текущей. Готово