为什么如果所选的开始日期与所选的结束日期相差一个月,为什么总是出现错误,说明日期格式无效?

时间:2018-08-26 00:20:18

标签: php laravel

我有一个编辑页面,其中显示了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;

问题:

如果在同一月份插入开始日期和结束日期,则更新有效。

但是,如果所选的开始日期位于所选的结束日期的不同月份,则始终会显示一条错误消息,说明日期格式无效。

你知道为什么吗?

1 个答案:

答案 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日期,尽管我怀疑您需要找到要使用的日期选择器的手册。