Стоит знать, что указанный вами формат даты не является произвольным. Это вывод встроенного метода Date.toString () (по крайней мере, в Великобритании и США). Не случайно, это также формат команды date в unix (по крайней мере, в Linux, и я верю и в другие реализации) - хотя, чтобы быть педантичным, Date.toString () дополняет однозначные числа дня нулями дата unix не указана.
Это означает, что вы, вероятно, получите этот формат ввода, когда вы выводите неформатированную дату в поле, изменяемое пользователем (например, в поле HTML INPUT), и получаете его обратно без изменений. Так что если входные данные поступают в этом формате, это не означает, что пользователи будут вводить тысячи других произвольных форматов.
Конечно, они все еще могут. В общем случае я обрабатываю ввод даты с помощью нескольких блоков try / catch, где я пытаюсь использовать один формат, затем другой, затем другой. Наша стандартная структура по умолчанию поддерживает до 20 различных форматов. Конечно, это все еще не идеально; На днях я обнаружил, что кто-то вводит «03 сентября» в качестве даты (нестандартное сокращение месяца без года), и мы не обрабатывали этот сценарий.