Как мне соединить мою строку даты и времени вместе? - PullRequest
1 голос
/ 05 октября 2019

Я пытаюсь соединить мою строку даты и времени вместе, прежде чем запускать ее в date_create_from_format, но я продолжаю получать сообщение об ошибке "date_format () ожидает, что параметр 1 будет DateTimeInterface, bool учитывая" может кто-нибудь объяснитьмне, что я делаю не так?

public function store(Request $request)
    {

        //

         $this->validate($request, [
            'event_name' => 'required|string|min:2|max:255',
            'daterange' => 'required',
        ]);
        $time_start = $request->input('start_time');

        $time_end = $request->input('end_time');

        $tempDate = $request->input('daterange');
        $temp2 = str_replace('-', null, $tempDate);
        $temp2 = str_replace('/', '-', $temp2);
        $temp3 = explode('  ', $temp2);

        $merge = $temp3[0]. ' '. $time_start;

        $date1 = date_create_from_format('m-d-Y H:i:s', $merge);
        $date2 = date_create_from_format('m-d-Y H:i:s', $temp3[1]);

        $event = new event([
            'event_name' => $request->input('event_name'),
            'event_desc' => $request->input('event_desc'),
            'event_venue' => $request->input('event_venue'),
            'event_start' => date_format($date1, 'Y-m-d'),
            'event_finish' => date_format($date2, 'Y-m-d'),

            'evcat_id' => $request->input('evcat_id'),
            'user_id' => $request->input('user_id'),
        ]);

        $event->save();
        Session::flash('success', 'Event Created Successfully');
        return redirect()->route('event.sched');

    }

Ответы [ 2 ]

0 голосов
/ 05 октября 2019

Вы выполняете много обработки дат и времени, и вы можете упростить это до следующего. Когда вы говорите, что у даты есть дата / время, убедитесь, что дата завершена - ваша дата окончания - только часть даты, поэтому я также добавил время окончания.

$temp3 = explode(' - ', $tempDate);

$date1 = date_create_from_format('m/d/Y H:i:s', $temp3[0]. ' '. $time_start);
$date2 = date_create_from_format('m/d/Y H:i:s', $temp3[1]. ' '. $time_end);
echo date_format($date1, 'Y-m-d').PHP_EOL.
    date_format($date2, 'Y-m-d');

дает. ..

2019-10-14
2019-10-14

Стоит упомянуть, что, хотя вы и вводите дату / время для начала и конца, когда вы создаете событие, похоже, вы используете только часть даты!

0 голосов
/ 05 октября 2019

Существуют разные способы слияния даты и времени. Вот два способа, как указано ниже:

$date = new DateTime('2019-10-05');
$time = new DateTime('12:20:25');

// Solution 1, merge objects to new object:
$merge = new DateTime($date->format('Y-m-d') .' ' .$time->format('H:i:s'));
echo $merge->format('Y-m-d H:i:s'); // Outputs '2019-10-05 12:20:25'

echo "<br/>";

// Solution 2, update date object with time object:
$date->setTime($time->format('H'), $time->format('i'), $time->format('s'));
echo $date->format('Y-m-d H:i:s'); // Outputs '2019-10-05 12:20:25'
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...