Разбор только раз с использованием Углерода

#php #laravel #time #data-transfer-objects

Вопрос:

У меня есть поле в моем классе DTO, которое принимает start_time и end_time как «2:00 утра».

 /**
 * @var string
 */
#[CastWith(TimeCaster::class)]
public string $start_time; // 01:00 AM example

/**
 * @var string
 */
#[CastWith(TimeCaster::class)]
public string $end_time;
 

Могу ли я проанализировать этот формат времени, используя углерод в моем классе заклинателей

 #[Attribute] class TimeCaster implements Caster
{
    public function cast(mixed $value): mixed
    {
        return Carbon::parse($value)->format();
    }
}
 

Ответ №1:

Я думаю, вы используете Carbon::createFromFormat

 Carbon::createFromFormat('H:i A','10:00 PM')->format('Y-m-d H:i:s)
 

если вы хотите получить только время, используя метку времени, то

 Carbon::parse("2021-06-26 22:00:00")->format('g:i A')