проверьте формат даты в PHP

#php

#php

Вопрос:

У меня есть функция ввода даты, которая требует от пользователя ввести дату в следующем формате: ДД-ММ-ГГГГ — затем она преобразуется в ГГГГ-ММ-ДД

Я хочу выполнить проверку, чтобы увидеть, вводят ли они правильный формат. т.Е. если введено что-либо еще, кроме ДД-ММ-ГГГГ, тогда должно появиться сообщение об ошибке

В настоящее время я использую следующее

                     list($y, $m, $d) = explode('-', $date);

                    if(checkdate($m, $d, $y)){

                    }else{
                        die("The date was in the wrong format");
                    }
  

Я попытался поместить код, который следует за этим, внутрь оператора if, а также вообще не включать else — но это не работает. Есть предложения о том, что я могу попробовать? Спасибо

Ответ №1:

Вы просите пользователя ввести ДД-ММ-ГГГГ, но в вашем list() вызове ожидается, что explode() порядок будет таким, как ГГГГ-ММ-ДД-ДД.

Обновите свой код с помощью:

 list($d, $m, $y) = explode('-', $date);
  

Ответ №2:

просто измените оператор на противоположный:

 list($d, $m, $y) = explode('-', $date);
if(!checkdate($m, $d, $y)){
    die("The date was in the wrong format");
}
// your code here
  

Ответ №3:

попробуйте эти

http://roshanbh.com.np/2008/05/date-format-validation-php.html

http://www.plus2net.com/php_tutorial/date-validation.php

лучше сначала проверить на стороне клиента, используя js, затем вы можете выполнить php validtaion .

почему страница должна отправлять

Ответ №4:

 $in = '31-05-2011';

$ts = date_create_from_format('d-m-Y', $in);

$out = date_format($ts, 'd-m-Y');

if ($in === $out) {
   ... it's correctly formatted
}
  

Обратите внимание, что это не приведет к обнаружению ошибок, таких как указание ’03-04-11′ для 4 марта 2011 года, когда пользователь на самом деле имеет в виду 11 апреля 2003 года.