我正在尝试提取输入日期的年份,例如
$start = $request->input('start');
$refYear = DateTime::createFromFormat("Y-m-d H:i:s", $start)->format("Y");
但是我遇到了错误Call to a member function format() on boolean
,我看到了另一个答案,但到目前为止没有任何结果。
将开始位置定义为我页面中的输入
<input id="start" type="text" name="start" class="date-type"
placeholder="dd-mm-aaaa"><i class="fi-calendar" style="top: 2px;"></i>
在我的表中,startDate列是一个日期时间,例如“ 2017-10-26 00:00:00.000”,而refyear是一个int(2017)。
答案 0 :(得分:1)
您可以改用Carbon
:
$refYear = Carbon::createFromFormat("Y-m-d H:i:s", $start)->format("Y");
但是您的格式也有误,根据日期字段的示例,您缺少.u
。您应该使用此:
$refYear = Carbon::createFromFormat("Y-m-d H:i:s.u", $start)->format("Y");
答案 1 :(得分:1)
根据文档DateTime :: createFromFormat:
失败时返回新的DateTime实例或FALSE。
这就是为什么要以布尔值调用它的原因,因为该值是false。
您的格式似乎正确,这意味着createFromFormat
无法处理您的$start
。您输入的内容与格式不符,请确保其匹配。
以下示例有效:
echo (DateTime::createFromFormat("Y-m-d H:i:s", "2019-01-01 12:30:30"))->format("Y"); // result: 2019
@ p @ jeprubio来自评论是正确的。 -添加毫秒以匹配您的给定格式:
echo DateTime::createFromFormat("Y-m-d H:i:s.u", "2017-10-26 00:00:00.000")->format("Y"); // 2017