1

在我的数据库中,我有格式的日期字段Y-m-d H:i:s。我想要的是,在数据库中添加新项目时,这个日期总是比此时大。我用 laravel 的验证器检查这个:

Validator::make->($request->all(), [ 'date'=>'date|after:'.date(Y-m-d H:i:s) ]);

问题是,我的页面使用不同的语言,每种语言都有不同的日期格式。有时我想要默认格式,有时我想要d.m.Y H:i:s,等等。我在resources/lang目录中为不同的语言进行了翻译。为了验证,我翻译了现有validation.php文件,但问题是,我不知道如何格式化日期,如果用这种方法甚至可能的话。目前,我的日期始终采用默认格式,即我将输入与之进行比较的格式。我的validation.php文件如下所示:

<?php

return [
   'after' => 'The :attribute must be a date after :date.'
];

我现在的问题是,如何格式化:date属性。任何帮助,将不胜感激。

我已经试过了:

'after' => 'The :attribute must be date after'.date(format, strtotime(':date'))

但它什么也没做。

4

2 回答 2

1

我不确定它是否能解决您的问题,但我对此进行了测试:

$dateFormat = 'j.n.Y';
$this->validate($request, [
  'date' => 'date_format:'.$dateFormat.'|after:' . now()->format($dateFormat)
]);

它似乎工作。更改$dateFormat,它会正确显示错误。

于 2019-05-21T15:30:25.860 回答
1

日期将始终传递给 PHP strtotime 函数。

要使日期始终大于这一刻,您可以简单地使用“现在”一词。Laravel 使它变得非常简单,如下所示。

Validator::make->($request->all(), [
 'date'=>'date|after:now'
]);
于 2016-09-19T11:00:43.303 回答