Y a-t-il une bibliothèque d'analyseurs de date / heure intelligente pour Java? Par intelligent, je veux dire, que je n'ai pas besoin de spécifier le format de date / heure. L'API devrait être similaire à celle-ci: // I'm telling the parser: "If unsure, assume US date format"
cal = DateTimeParser.parse("01/02/03", new Locale("en-us"));
7 Réponses :
Non, il n'y a pas. Ce qu'il devrait revenir sur "01/02/03"? 1 janvier 2003, 3 février 2001, ou 2 mars 2001? P>
@fhucho 10/10/10 code> est le 10 octobre 2010 sans envisager les paramètres régionaux s'il est traité comme jour / mois / année dans n'importe quelle combinaison. Qu'est-ce que l'analyseur doit faire pour 08/09 code>? Il s'agit de 8 / septembre / année en cours pour en-États-Unis, ou Sep / 2008 ou août 2009 ou il provoque une erreur d'analyse?
@khachik Oh, tu as raison, je vais éditer la question au 01/02/03. Quant au 08/09 - il devrait renvoyer l'une des 3 options et indiquer en quelque sorte qu'il n'est pas sûr du résultat. Idéalement, il devrait se comporter de la même manière à un ...
@fhucho Ok, passons en avant. Comment cela devrait indiquer qu'il n'est pas sûr du résultat et de ce que le code l'appelait doit faire dans ce cas?
@khachik Option est analyseur P = nouvel analyseur (); p.parse ("08/09"); p.getCertainity (); code>. Ou parse (...) code> pourrait renvoyer un objet contenant de latéralité.
@khachik Dans mon cas, le code d'appel afficherait quelque chose comme "Erreur lors de l'obtention du dernier temps de mise à jour", ou simplement rien faire, car la probabilité de cela est presque zéro (dans mon cas).
@fhucho Que fait le code de l'appelant, quand il obtient un objet code> code> qui représente un ou plusieurs problèmes trouvés? Vous essayez de prouver que cela est possible de faire un tel analyseur. Oui c'est possible. Un tel analyseur peut être utile pour des cas particuliers, mais pas en général. Donc, si jchronic code> ou quelque chose d'autre correspond à vos besoins, vous pouvez l'utiliser. J'en ai fait un sur Python, mais c'était très spécifique, correspond à mes besoins, et j'ai rencontré la même question il y a longtemps.
Cela ne va pas vraiment être possible, ou du moins fiable suffisamment fiable. P>
Par exemple, quelle date la chaîne 10/10/10 code> représente-t-elle? p>
Je n'ai pas besoin de 100% de fiabilité. Pour des cas comme celui-ci, la fonction Payse peut avoir lieu ou une langue en tant qu'argument facultatif.
Jodatime est excellent pour la manipulation d'objets de date (par exemple, date.plusdayes (10))
Chronic.parse("now")
Chronic.parse("tomorrow 15:00")
Chronic.parse("14/2/2001")
Chronic.parse("yesterday")
Chronic.parse("20 Jan 2010")
"Date de langage naturel analysant"! = "Format-Draying Date d'analyse de la date"
Non - mais c'est toujours utile dans le contexte de la question.
curieux que vous souhaitez appeler cela intelligent em>, considérons simplement celles-ci: p>
La réponse à votre question est aucun em>. p>
1.2.2010 code> le même que le mien? li>
Vous pouvez utiliser org.pojava . Cette bibliothèque assez intelligente pour détecter le format de temps sortie p>
Si vous demandez un analyseur de date / heure intelligente, vérifiez celui-ci https://github.com/zoho/hewking . Dévolé par l'équipe Zoho Zia. P>
L'analyseur Hawking est un analyseur NLP basé sur Java pour une analyse de la date et de l'heure d'analyse. Les analyseurs les plus populaires tels que Heidel Time, Sutime et Date Daty Date Parser sont nettement basés sur des règles. En tant que tel, ils ont souvent tendance à avoir du mal à analyser les informations de date / heure où des facteurs plus complexes tels que contextuels, tendus, valeurs multiples et plus doivent être pris en compte. P>
Dans cet esprit, Hawking Parser est conçu pour résoudre beaucoup de ces défis et présente de nombreux avantages distincts par rapport à d'autres analyseurs de date / heure disponibles. P>
C'est une bibliothèque open source sous GPL V3 et la meilleure. Pour savoir pourquoi il est préférable, consultez ce blog qui explique en détail: https://www.zoho.com/blog/general/zias-nlp-based-hawking-date-time-Parser-is-now-open-source .html p>
P.s: Je suis l'un des développeurs de ce projet P>
Vous pouvez créer un analyseur à l'aide de Démo: strong> p> DateTimeformatterBuilder code> qui peut s'occuper de l'analyse insensible à la casse, des motifs facultatifs (par défilés intérieurs spécifiés), Les champs manquants (par exemple, hour_of_day code>) etc. p> 2021-04-01T00:00
2021-04-01T00:00
2010-01-06T00:00
2009-01-01T00:00
2010-01-02T00:00
"asdf" could not be parsed. Error: Text 'asdf' could not be parsed, unparsed text found at index 0
Question similaire à: Stackoverflow.com/questions/3850784/...
Dupliqué possible de Analyser toute date à Java
Celui-ci github.com/zoho/hawking peut résoudre votre problème