Carbon поддерживает все форматы даты, которые PHP поддерживает . Таким образом, любой из форматов, перечисленных в разделе «Локализованные обозначения», можно использовать для создания действительной даты. Например:
use Carbon\Carbon;
$date = new Carbon('2008-6');
$date = new Carbon('2008-06');
$date = new Carbon('June 2008');
$date = new Carbon('2008 June');
Если вы хотите поддерживать любые другие форматы, вы можете использовать метод Carbon::createFromFormat
для создания даты из заданного формата. Вы можете создать новый класс для поддержки нескольких новых форматов, например:
<?php
namespace App\Traits;
use Carbon\Carbon;
use InvalidArgumentException;
class MonthYearParser
{
const SUPPORTED_FORMATS = [
'm-y',
'm-Y',
'm/y',
'm/Y',
];
public static function convertYearMonthToDate(string $input)
{
foreach(self::SUPPORTED_FORMATS as $format) {
try {
$date = Carbon::createFromFormat($format, $input);
return $date;
} catch (InvalidArgumentException $e) {
}
}
throw new InvalidArgumentException("Input is not in a valid year-month format");
}
}
Затем вы можете использовать этот класс, например, в пользовательском правиле валидации или в контроллере как :
MonthYearParser::convertYearMonthToDate('6/2008')