8

我只需要一个简单的日期格式 mm/dd/yyyy 验证...

$rules = array(
    'renewal_date' =>  array('required', 'date_format:?')
    );

我将日期格式设置为什么?Laravel 文档可能会更好。

4

7 回答 7

12

文档对我来说很清楚,你应该使用

日期格式:格式

“正在验证的字段必须匹配根据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() );

对我来说是印刷

布尔真

于 2013-09-17T14:28:37.953 回答
6

我遇到了类似的问题,但使用的是 ad/m/Y 日期格式。就我而言,问题是我为同一字段定义了“日期”和“日期格式”规则:

public static $rules = array(
    'birthday' => 'required|date|date_format:"d/m/Y"',
    ...

解决方案是删除“日期”验证器:您不能同时使用. 像这样:

public static $rules = array(
    'birthday' => 'required|date_format:"d/m/Y"',
    ...

在那之后,一切都很好。

于 2014-06-28T03:31:02.947 回答
4

解决方法:

'renewal_date' => array('required', 'date_format:m/d/Y', 'regex:/[0-9]{2}\/[0-9]{2}\/[0-9]{4}/')
于 2014-02-06T15:43:43.887 回答
1

你应该使用double quotelike"Y-m-d H:i:s"

$rules = array(
    'renewal_date' =>  array('required', 'date_format:"m/d/Y"')
                                                      ^     ^ this ones
);

GitHub上关于这个问题的讨论: https ://github.com/laravel/laravel/pull/1192

于 2013-09-17T14:32:14.463 回答
0

date_format 对我不起作用,所以我做了这个自定义验证

Validator::extend('customdate', function($attribute, $value, $parameters) {
  $parsed_date = date_parse_from_format ( "Y-m-d" , $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')
);
于 2014-01-16T01:49:10.610 回答
0

使用 PHP date_parse_from_format(Laravel 4):

'birthday' => 'date_format:m/d/Y'

您的验证消息也将使用"m/d/Y"普通用户无法理解的内容。 生日与 m/d/Y 格式不匹配

建议针对此无效响应自定义您的消息。 生日与 mm/dd/yyyy 格式不匹配

于 2014-06-10T02:02:50.337 回答
0

来源:点击这里

你可以使用喜欢

$rules = [
    'start_date'        => 'date_format:d/m/Y|after:tomorrow',
    'end_date'          => 'date_format:d/m/Y|after:start_date',
];
于 2016-04-19T06:37:27.560 回答