识别任意日期字符串 [已关闭]

2022-09-01 20:57:18

我需要能够识别日期字符串。如果我无法区分月份和日期(例如12/12/10),我只需要将字符串分类为日期,而不是将其转换为Date对象即可。所以,这实际上是一个分类而不是解析问题。

我将有一些文本,例如:

“bla bla bla bla 12 Jan 09 bla bla bla 01/04/10 bla bla bla”

我需要能够识别每个日期字符串的开始和结束边界。

我想知道是否有人知道任何可以做到这一点的java库。到目前为止,我的谷歌还没有想出任何东西。

更新:我需要能够识别出最广泛的表示日期的方式。当然,天真的解决方案可能是为每一种可以想象的格式编写一个if语句,但是模式识别方法,以及经过训练的模型,理想情况下是我所追求的。


答案 1

使用 JChronic

您可能希望使用edu.mit.broad.genome.utils软件包中的DateParser2


答案 2

您可以在 Java 中循环所有可用的日期格式:

for (Locale locale : DateFormat.getAvailableLocales()) {
    for (int style =  DateFormat.FULL; style <= DateFormat.SHORT; style ++) {
        DateFormat df = DateFormat.getDateInstance(style, locale);
        try {
                df.parse(dateString);
                // either return "true", or return the Date obtained Date object
        } catch (ParseException ex) {
            continue; // unperasable, try the next one
        }
    }
}

但是,这不会考虑任何自定义日期格式。