SimpleDateFormat не позволит вам сделать это. Он не поддерживает альтернативы в (одном) формате.
Даже если бы это произошло, возникла бы проблема. Подумайте об этом
new SimpleDateFormat("yyyy-MM-dd [hh:mm]");
против использования
new SimpleDateFormat("yyyy-MM-dd hh:mm");
new SimpleDateFormat("yyyy-MM-dd ");
В первом случае, когда я анализировал дату по формату, я не мог определить разницу между "2010-01-01" и "2010-01-01 00:00", посмотрев на Date
доставлено мне. Во втором случае я могу.
В первом случае, когда я форматирую дату с нулем в полях минут и секунд, неясно, должен ли результат заканчиваться на «00:00» ... или нет. Во втором случае это полностью в руках приложения.
Полагаю, что здесь я действительно поднимаю вопрос о том, что даты и дата / время означают разные вещи для разных людей и в разных контекстах. Иногда они означают моменты, а иногда интервалы. Иногда отсутствие выраженной точности означает неточность, а иногда и то, что подразумевается точность.
Как разработчики, мы должны провести грань между написанием раздражающе разборчивого программного обеспечения и программного обеспечения, которое делает неверные предположения о том, что на самом деле означает пользователь под значением даты / времени. Первым шагом к тому, чтобы сделать его правильным для пользователя, является понимание сложности проблемы. Перегрузка вариаций в одну строку формата (будет) приведет к решению проблемы.