Мне любопытно, как лучше всего обрабатывать неоднозначную строку даты на любом данном языке. Если предварительная проверка вводимых пользователем данных невозможна, как следует анализировать даты MM / dd / YYYY?
Как бы вы проанализировали следующую неоднозначную дату и по какой причине (статистической, культурной и т. д.)?
'1111900' как 11 января 1900 [М / ДД / ГГГГ] или 1 ноября 1900 [ММ / д / ГГГГ]?





Если вы точно не знаете, для какого языка / культуры используется формат, вам необходимо установить общий формат даты.
Я бы порекомендовал так называемый формат даты, не зависящий от локали. (ГГГГ-ММ-ДД)
Либо используйте это, либо четко укажите, в какой части находится год, месяц и день. (ДД МЕС ГГГГ или 22 апреля 2003 г.)
См .: взгляд w3 о форматировании даты.
Обновлено: неверно введен формат даты, не зависящий от локали
ГГГГ-ММ-ДД также можно легко отсортировать.
В зависимости от того, насколько важно программное обеспечение, я буду рассматривать любую неоднозначную запись даты как недопустимую. Вы должны быть уверены (в источнике), что вводимая вами дата находится в разумном, однозначном формате. Если вам все же удается получить что-то вроде «1111900», значит, ввод неверен, кто-то, очевидно, каким-то образом обошел код проверки действительности, и, вероятно, самое правильное, что вы можете сделать, - это отбросить данные.
Конечно, если это не вариант и установка даты не критична, вы всегда можете догадаться, но это будут только предположение. Я бы определенно избегал этого, если бы это было возможно. Принятие необеззараженного ввода - не лучшая идея.
Единственный способ узнать разницу между 11 января и 1 ноября в такой системе - это контекст. В противном случае вам нужно будет пройти какое-то устранение неоднозначности. Этот конкретный формат даты был бы прекрасным примером патологически деструктивного сжатия.
Я предпочитаю, когда важна дата, - это использовать раскрывающиеся списки предложений или календарь, чтобы он всегда был в ожидаемом формате.
почему не ГГГГ-ММ-ДД согласно рекомендации?