Как создать углеродную дату в Laravel

Как мне создать углеродную дату, если у меня есть часть даты в следующем формате «d M Y», и у меня есть часы и минуты в отдельных переменных как целые числа.

eg.

$this->start_dt  = '06 Feb 2016'
$this->start_hr  = '12'
$this->start_min  = '00'

В настоящее время мне приходится это делать, но это также приводит к добавлению текущих секунд.

Carbon::createFromFormat('d M Y', $this->start_dt)->hour($this->start_hr)->minute($this->start_min);

результат 2016-02-06 12:00:44

Есть ли более чистый способ создать углеродную дату без необходимости связывать часы и минуты и устанавливать секунды на 00?

Может быть, что-то вроде этого, но это не работает:

Carbon::createFromFormat('d M Y H:i', $this->start_dt, $this->start_hr, $this->start_min);

* ОБНОВЛЕНИЕ *

Успейте разобраться:

 Carbon::createFromFormat('d M Y H:i:s', $this->start_dt . ' ' . $this->start_hr . ':'. $this->start_min . ':00');

person adam78    schedule 06.02.2016    source источник
comment
Разве вы не можете просто добавить секунды, как хотите?   -  person Mike Miller    schedule 06.02.2016
comment
Хех, да, как твоя редакция   -  person Mike Miller    schedule 06.02.2016


Ответы (2)


Документация: создание экземпляров

Carbon::createFromDate($year, $month, $day, $tz);
Carbon::createFromTime($hour, $minute, $second, $tz);
Carbon::create($year, $month, $day, $hour, $minute, $second, $tz);

Документация: Свободные сеттеры

$dt->year(1975)->month(5)->day(21)->hour(22)->minute(32)->second(5)->toDateTimeString();
$dt->setDate(1975, 5, 21)->setTime(22, 32, 5)->toDateTimeString();
$dt->setDateTime(1975, 5, 21, 22, 32, 5)->toDateTimeString();

Решение:

Carbon::createFromFormat('d M Y', $this->start_dt)
    ->setTime($this->start_hr, $this->start_min);
person Grzegorz Gajda    schedule 06.02.2016

Если вы хотите использовать createFromFormat, вам нужно ввести второй аргумент в виде строки, подобной этой:

$dt=Carbon\Carbon::createFromFormat('d M Y H:i', $this->start_dt.' '.$this->start_hr.':'.$this->start_min);
person Ammar Ajmal    schedule 06.02.2016