我有一个编辑页面,其中显示了start_date和end_date字段。字段如下:
<div class="form-row">
<div class="form-group col-md-6">
<label for="start_date">Start date</label>
<div class="input-group date" data-provide="datepicker">
<input type='text' onkeydown="event.preventDefault()" name="start_date"
value="{{!empty($c->start_date)? $c->start_date->format('d-m-y - H:i') : ''}}"
class="form-control" placeholder="DD/MM/YYY"/>
<span class="input-group-addon"><i class="fa fa-calendar" aria-hidden="true"></i></span>
</div>
</div>
<div class="form-group col-md-6">
<label for="end_date">End date</label>
<div class="input-group date" data-provide="datepicker">
<input type='text' class="form-control"
value=" {{!empty($c->end_date) ? $c->end_date->format('d-m-y - H:i') : ''}}" name="end_date" placeholder="DD/MM/YYY"/>
<span class="input-group-addon"><i class="fa fa-calendar" aria-hidden="true"></i></span>
</div>
</div>
</div>
然后使用验证:
'start_date' => 'nullable|date_format:"j-m-y - H:i"',
'end_date' => 'nullable|date_format:"j-m-y - H:i"|after_or_equal:start_date',
然后使用要更新的内容:
$conference->start_date = (isset($request->start_date)) ? Carbon::createFromFormat('j-m-y - H:i', $request->start_date) : null;
$conference->end_date = (isset($request->end_date)) ? Carbon::createFromFormat('j-m-y - H:i', $request->end_date) : null;
问题:
如果在同一月份插入开始日期和结束日期,则更新有效。
但是,如果所选的开始日期位于所选的结束日期的不同月份,则始终会显示一条错误消息,说明日期格式无效。
你知道为什么吗?
答案 0 :(得分:0)
我认为这可能是日期格式问题。
您提供的示例中的日期格式存在一些不一致...
您在:d-m-y - H:i
您使用:j-m-y - H:i
您还没有说明JS日期选择器提供的格式!
您需要确保日期格式在PHP和Frontend JavaScript中的应用程序的所有元素之间都是一致的。 请查看http://php.net/manual/en/function.date.php,以获取有关PHP日期格式的帮助。还有https://www.w3schools.com/js/js_date_formats.asp代表JS日期,尽管我怀疑您需要找到要使用的日期选择器的手册。