Deseo construir un formato de fecha que opcionalmente tendrá un argumento de tiempo.¿Cómo creo un DateFormat con un argumento de tiempo opcional?
DateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd [hh:mm]");
¿Es también posible construir un formato de objeto fecha que es capaz de analizar diferentes formatos? Tal como probar la configuración regional actual, pero luego recurrir a ISO-8601 o debería simplemente escribir varios formatos de fecha si uno falla?
ACTUALIZACIÓN: Mirando hacia atrás a esta pregunta Puedo ver que no especificó que el motivo de múltiples formatos de fecha era para analizar cadenas, no para dar formato a una fecha, por lo tanto la ambigüedad para dar formato a los objetos de fecha no era una preocupación para mi. Si toma esto en cuenta, la porción de tiempo está o no incluida en la cadena de análisis sintáctico.
No sé si hay una respuesta canónica, pero siempre puedes usar varios objetos de DateFormat, incluso una lista de ellos, y usar uno que no arroje una excepción ParseException. –
Gracias, comencé a hacer eso usando 4 formatos diferentes, dos para la instancia predeterminada con/sin una y otra vez dos de los formatos ISO con/sin tiempo. Estoy pensando si debería probar la longitud de la secuencia para dar prioridad a los formatos de fecha + hora. –
No se puede formatear una fecha de manera opcional con el tiempo porque todas las fechas tienen tiempo. ¿Cómo se mostraría opcionalmente? Puede analizar una fecha con muchos patrones, pero puede usar los DateUtils de apache common lang y pasar los patrones de análisis. – user364939