我通常使用此格式设置日期:
$date = DateTime::createFromFormat('Y-m-d\TH:i', $request->id_input);
是否可以格式化不带日期的日期;只有时间? 我从Manual PHP DateTime::createFromFormat开始尝试过:
$hour = DateTime::createFromFormat('H\hi\m \s', $request->sel)->format('H:i:s');
这不起作用。它抛出一个错误,指出:
Symfony\Component\Debug\Exception\
FatalThrowableError (E_ERROR)
Call to a member function format() on boolean
我有一个select
,其中包含一些选项,如以下示例所示:
<select name="sel">
<option value="08:00:00">08:00:00</option>
<option value="09:00:00">09:00:00</option>
<option value="10:00:00">10:00:00</option>
</select>
我有一个select
来选择时间,日期在另一个输入中。
最后,我尝试将记录保存到MySQL中的数据库中。这是我的控制器:
public function store(Request $request){
$schedules = new SchedulesNew();
try {
$schedules->id = $request->id;
$schedules->court_id = $request->court_checkbox;
/*___________________________________________________________*/
$hour = DateTime::createFromFormat('H\hi\m \s', $request->sel)->format('H:i:s');
$schedules->start_time =$request->date_input + $hour;
$hour2 = DateTime::createFromFormat('H\h i\m s\s', $request->sel2)->format('H:i:s');
$schedules->end_time = $request->date_input_end + $hour2;
$schedules->state_schedule_id = $request->state_schedule_id;
$schedules->save();
} catch (\Illuminate\Database\QueryException $e) {
Session::flash('error', 'There was an unknown error');
return redirect()->route('schedules.store');
}
Session::flash('message', "The record was saved successfully");
return redirect()->route('schedules.store');
}
如果我不转换从选择项获得的时间,则我的网站会显示一条错误消息:
A non well formed numeric value encountered
在这些行上:
$schedules->start_time =$request->date_input + $request->sel;
$schedules->end_time = $request->date_input_2 + $request->sel2;
这就是我认为需要转换为时间格式而非日期格式的原因。
答案 0 :(得分:1)
在使用Laravel时,请尝试使用Carbon,如下所示:
Carbon\Carbon::createFromFormat('H:i:s', "08:00:00");
这是响应
=> Carbon\Carbon {#1226
"date": "2018-10-30 08:00:00.000000",
"timezone_type": 3,
"timezone": "UTC",
}
答案 1 :(得分:-1)
您必须将代码的整个DateTime::createFromFormat()
部分用括号括起来。像这样:
$hour = (DateTime::createFromFormat('H\hi\m \s', $request->sel))->format('H:i:s');