可以格式化不带日期的日期

时间:2018-10-30 12:17:47

标签: php laravel

我通常使用此格式设置日期:

$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;

这就是我认为需要转换为时间格式而非日期格式的原因。

2 个答案:

答案 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');