Сколько недель в году? Если вы спросите, большинство людей скажут 52, но правильный ответ будет: 52 и 53, в зависимости от года. Чтобы быть точным, в году 52.1775 недель, и этот избыток накапливается до тех пор, пока году не дадут дополнительную неделю.
Например, самым последним годом с 53 неделями был 2015 год. 31 декабря 2015 года считается частью 53й недели 2015 года (формально 2015-W53), а 1 января 2016 года также считается частью 53й недели 2015 года. и 31 декабря 2019 года, и 1 января 2020 года считаются частью первой недели 2020 года (формально 2020-W01).
Все это определено в стандарте ISO 8601, и это одно из многих запутанных способов поведения, которые вы найдете при работе с датами. Symfony должен решить это для вас, чтобы вы могли сосредоточиться на более важных вещах.
В Symfony 4.4 добавили новое поле формы WeekType
, которое позволяет пользователям изменять данные, которые представляют определенный номер недели ISO 8601:
use Symfony\Component\Form\Extension\Core\Type\WeekType;
$builder->add('startDateTime', WeekType::class, [
// use this if you store week numbers as strings ('2011-W17')
'input' => 'string',
// use this if you store week numbers as arrays (e.g. [2011, 17])
'input' => 'array',
// renders two
Если ваши целевые браузеры поддерживают это, установите для параметра widget
значение single_text
, чтобы поле формы отображалось как <input type="week">
, это обеспечит лучший пользовательский опыт при работе с данными такого типа.