Простой формат даты mm / dd / yyyy – это все, что мне нужно …
$rules = array( 'renewal_date' => array('required', 'date_format:?') );
Для чего я устанавливаю формат даты? Документация Laravel может быть намного лучше.
Документация для меня довольно понятна, вы должны использовать
date_format: формат
«Поле под проверкой должно соответствовать формату, определенному в соответствии с функцией date_parse_from_format PHP».
Глядя на это: http://php.net/manual/en/function.date-parse-from-format.php , я вижу, вы можете сделать что-то вроде этого:
$rules = array( 'renewal_date' => array('required', 'date_format:"m/d/Y"') );
Это чистый PHP-тест:
print_r(date_parse_from_format("m/d/Y", "04/01/2013"));
Вы также можете сделать это вручную в Laravel для тестирования:
$v = Validator::make(['date' => '09/26/13'], ['date' => 'date_format:"m/d/Y"']); var_dump( $v->passes() );
Мне это печатает
boolean true
У меня есть аналогичная проблема, но с форматом даты ad / m / Y. В моем случае проблема заключалась в том, что я определил правила «date» и «date_format» для одного и того же поля:
public static $rules = array( 'birthday' => 'required|date|date_format:"d/m/Y"', ...
Решение состоит в том, чтобы удалить валидатор «даты»: вы не должны использовать оба . Как это:
public static $rules = array( 'birthday' => 'required|date_format:"d/m/Y"', ...
после этого все хорошо.
Временное решение:
'renewal_date' => array('required', 'date_format:m/d/Y', 'regex:/[0-9]{2}\/[0-9]{2}\/[0-9]{4}/')
Вы должны использовать с double quote
например, "Ymd H:i:s"
$rules = array( 'renewal_date' => array('required', 'date_format:"m/d/Y"') ^ ^ this ones );
Обсуждение этой проблемы на GitHub: https://github.com/laravel/laravel/pull/1192
date_format не работал для меня, поэтому я сделал эту обычную проверку
Validator::extend('customdate', function($attribute, $value, $parameters) { $parsed_date = date_parse_from_format ( "Ymd" , $value); $year = $parsed_date['year']; $month = $parsed_date['month']; $month = $month <= 9 ? "0" . $month : $month; $day = $parsed_date['day']; $day = $day <= 9 ? "0" . $day : $day; return checkdate($month, $day, $year); }); $validation = Validator::make( array('date' => $num), array('date' => 'customdate') );
Используйте PHP date_parse_from_format
(Laravel 4):
'birthday' => 'date_format:m/d/Y'
В вашем валидационном сообщении также будет использоваться "m/d/Y"
который средний пользователь не поймет. День рождения не соответствует формату m / d / Y
Рекомендуем настроить ваше сообщение для этого недействительного ответа. День рождения не соответствует формату mm / dd / yyyy
Источник: Нажмите здесь
Вы можете использовать как
$rules = [ 'start_date' => 'date_format:d/m/Y|after:tomorrow', 'end_date' => 'date_format:d/m/Y|after:start_date', ];