2014-12-10 4 views
0

Даты провериться выглядят следующим образом:

$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

Вы можете включить будущие данные в 'timestamp' и сравните, что точеный 'timestamp' против текущего. Выполнено – Yang

+2

Пожалуйста, не изменяйте другой вопрос, если другие уже нашли время ответить! Просто при необходимости приступайте к новому вопросу. – RobP

+0

Возможный дубликат [Что в коде написано для сравнения даты с сегодняшней датой?] (Http://stackoverflow.com/questions/27394548/whats-the-issue-in-a-code-written-for- сравнение-date-with-todays-date) –

ответ

1

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

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

Обратите внимание, что OP изменилось вопрос. Если желаемая дата для проверки не находится в массиве $ _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(); 
+0

Я изменил свой вопрос. Теперь дата не будет в текущую дату в массиве $ _POST? – PHPLover

+1

@PHPLover Это еще один вопрос. Его ответ отвечает на ваш вопрос. – Yang

+0

OP удалил часть вопроса, для которой задан параметр $ _POST ['current_date'], но вы можете получить текущую временную метку с помощью 'time()' – RobP

0

С PHP DateTime вы можете проверить, является ли будущей или старым w.r.to на ФОРУМЕ дата ввода.

$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

Текущая дата не приходит в массив $ _POST. Тогда как это сделать? – PHPLover

+0

Разве это не тот же ответ? – Yang

+0

$ _POST ['current_date'] больше не существует. Затем, как проверить дату отправки $ с сегодняшней датой? – PHPLover

1

Если формат размещен в m-d-Y, то вы не можете преобразовать его в Отметка времени Unix непосредственно strtotime() функции, потому что она will return false.

Если вам нужно использовать strtotime(), то change the input format to m/d/Y by simple 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"; 
} 

demo

+0

@Glvic спасибо – fortune