tutorial - ¿Hay un buen analizador de fechas para Java?
para que sirve elastic search (9)
(Editado para mayor claridad)
Personalmente, creo que estricto es bueno. Tantas situaciones diferentes exigen reglas diferentes en torno al análisis relajado, es imposible ponerlas en una biblioteca común de manera exhaustiva.
Sin embargo, recomendaría Joda Time en lugar de las clases de fecha / hora incorporadas en general. Sus formateadores y analizadores son seguros e inmutables, lo que también ayuda. Joda Time tiene algo de apoyo para el análisis distendido, como se muestra en la otra respuesta, pero debe esperar tener que proporcionar algunas de las reglas usted mismo.
¿Alguien sabe un buen analizador de fechas para diferentes idiomas / configuraciones regionales? El analizador integrado de Java (SimpleDateFormat) es muy estricto. Debería completar las partes faltantes con la fecha actual.
Por ejemplo
- si no ingreso el año (solo día y mes), se debe usar el año actual.
- si el año es 08, entonces no debe analizar 0008 porque el patrón del año actual tiene 4 dígitos.
Editar: quiero analizar la entrada de un usuario. Por ejemplo, si el formato de fecha de configuración regional del usuario es "dd.mm.aaaa" y el usuario solo escribe "12.11". entonces el analizador debe aceptar esto como una fecha válida con el valor "12.11.2008". El objetivo es una buena usabilidad.
Tendría que decir +1 para JodaTime. Además del análisis, Joda mejora cada operación relacionada con la fecha.
Use DateFormat ... Estándar actual hasta el bienvenido respiro de Joda.
El proyecto POJava en SourceForge tiene un objeto DateTime que analiza las fechas de varios idiomas (cuando el mes se especifica como un nombre) y se puede configurar entre MM-DD-YYYY y DD-MM-YYYY. Analiza las fechas de forma heurística, seleccionando el año, el mes, la fecha, la hora, el minuto, el segundo y la zona horaria más probables en lugar de respaldar formatos predefinidos. El archivo jar tiene aproximadamente 60,000 de tamaño.
Existe una ambigüedad en la interpretación de una fecha como "10-08" en el sentido de que podría ser una abreviatura de "2008-10-08" u "octubre de 2008". Podría agregar el año usted mismo si está aceptando el tipo de taquigrafía que da en su ejemplo.
Proj: POJava Docs: CÓMO usar DateTime
Yo diría JChronic si estás buscando algo que analice las fechas de entrada humana natural "borrosa".
He usado tanto JChronic como Chronic (la versión original de Ruby) con gran éxito.
Compruebe Joda Time y sus formateadores Freaky. http://joda-time.sourceforge.net/userguide.html#Input_and_Output
Java 8 incluye JSR-310, por lo que podría ser una solución también.
Intenté implementar un strtotime
extensible de PHP en Java en esta respuesta
Por lo general, el calendario es el camino a seguir, pero comprende que la mayoría de la administración de fechas de Java se manejará de tu parte si quieres que se haga correctamente. La zona horaria es algo a lo que debes prestar atención si tienes que gestionar la información internacional / entre zonas. Joda Time también es una buena idea y es la inspiración detrás de los nuevos conceptos de Fecha / Hora sugeridos que se agregarán a Java en JSR 310 .
Espero que esto sea útil.