Из help test
:
STRING1 > STRING2
True if STRING1 sorts after STRING2 lexicographically.
Внутри bash использует strcoll()
или strcmp()
для этого:
else if ((op[0] == '>' || op[0] == '<') && op[1] == '\0')
{
if (shell_compatibility_level > 40 && flags & TEST_LOCALE)
return ((op[0] == '>') ? (strcoll (arg1, arg2) > 0) : (strcoll (arg1, arg2) < 0));
else
return ((op[0] == '>') ? (strcmp (arg1, arg2) > 0) : (strcmp (arg1, arg2) < 0));
}
Последний фактически сравнивает коды ASCII, первый (используется, когда локаль включена) выполняет более конкретное сравнение, которое подходит для сортировки в заданной локали.
Есть две опции:
использовать html5 (ваша текущая настройка). В этом случае документация гласит: «Если вы хотите, чтобы ваше поле отображалось как поле даты« HTML5 », вам необходимо использовать виджет single_text с форматом yyyy-MM-dd ...». На самом деле браузер показывает HTML5-виджет со значением 30/12/2019, но отправляет 2019-12-30 при отправке. Проверьте себя: https://www.w3schools.com/html/tryit.asp?filename=tryhtml_input_date
не используйте html5:
$builder->add('date_created', DateType::class, [
'widget' => 'single_text',
'html5' => false,
'format' => 'yyyy-MM-dd',
]);
Вы сможете установить и отправить дату в формате yyyy-MM-dd
.