Почему Carbon::createFromFormat() не выдает исключение, если задан формат Великобритании и дата в США?Php

Кемеровские программисты php общаются здесь
Ответить
Anonymous
 Почему Carbon::createFromFormat() не выдает исключение, если задан формат Великобритании и дата в США?

Сообщение Anonymous »

У меня есть этот код:

Код: Выделить всё

try {
Carbon::createFromFormat('dmY', $rawDate)->format('Ymd');
} catch (InvalidFormatException $e) {
echo 'Oops, bad date format.';
}
Если я подам 31012024 в качестве значения $rawDate, я получу обратно 20240131 в качестве вывода. Это правильно. Carbon правильно прочитал, а затем отформатировал дату так, как я ожидал.
Если вместо этого я введу 01312024 (1-й день 31-го месяца года ), я получаю на выходе 20260701. Это не то, чего я ожидал, поскольку 31-го месяца не существует, и я предполагал, что Carbon выдаст исключение InvalidFormatException, поскольку месяц просто не может существовать.
Я мог бы пропустить строку через скрипт, чтобы убедиться, что первые два символа меньше 31, а третий и четвертый символы меньше 12, но я не хочу учитывать разную длину месяцев и високосные годы.
Мой вопрос в том, есть ли другой метод Carbon, который я мог бы вызвать перед createFromFormat, чтобы сначала проверить правильность формата даты?
Я не могу использовать синтаксический анализ, поскольку это успешно проанализирует американский формат даты, чего я не хочу, чтобы сценарий делал; он должен принимать и проверять британский формат даты.
Ни один другой формат, кроме ддммгггг, приниматься не должен.
Для справки: я использую Carbon 2.72.5 и не нахожусь в среде Laravel, поэтому не могу использовать инструменты проверки Laravel.>

Подробнее здесь: https://stackoverflow.com/questions/792 ... a-uk-forma
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Php»