在Java中解析格式不正确的日期时间字符串

3

简述:我能否通过PrettyTime解析“04 Dec 2014 pm 1:58”?

详细说明:我需要解析并获取一些格式不规范的日期时间字符串的正确日期格式,例如“04 Dec 2014 pm 1:58”。当我解析这个示例字符串时,我得到的是:“Thu Dec 04 02:59:33 ALMT 2014”,我相信这是当前的时间戳。

考虑因素:如果只有这一个格式错误,我可以编写我的SimpleDateFormat。但是可能会有很多格式不规范的情况。

请问有没有人能告诉我,是否应该期望PrettyTime解析这种类型的格式不规范的字符串?或者您能指出任何能够处理这些类型的Java格式不规范日期字符串的库吗?


PrettyTime主要用于格式化而不是解析,但是有很多种格式可以使用,因此您需要使用SimpleDateFormat来覆盖最重要的格式。 - PeterMmm
@PeterMmm,PrettyTime主要用于NLP。我本来期望它能够处理这种格式不规范的字符串。然而,让我们看看我们的社区会说什么。如果没有直接的解决方案,我就必须自己写相当数量的SimpleDateFormat。 :| - Amit K. Saha
2个回答

1
这可能对你有所帮助!
SimpleDateFormat formatter = new SimpleDateFormat("dd MMM yyyy a hh:mm");
        String dateInString1 = "04 Dec 2014 pm 1:58";

        try {

            Date date = formatter.parse(dateInString1);
            System.out.println(date);
            System.out.println(formatter.format(date));

        } catch (ParseException e) {
            e.printStackTrace();
        }

使用HH,您将获得01:18而不是13:58。这是不正确的! - Ruslan Ostafiichuk
是的,应该是“hh”。已经更正了! - janasainik
@hemanth,谢谢你的回复,但正如我之前所说,这不是唯一的格式。如果它是唯一的格式,我可以像你回复的那样编码。但实际上有不同的格式和变化。因此,我正在寻找任何可以自动完成该部分的库或解决方案。 - Amit K. Saha
2
似乎这将不可能(或需要进行一些深度定制!),因为您应该告知JVM关于日期字符串格式的出现。 - janasainik
@hemanth,我同意你的看法。但是PrettyTime是一个非常好的自然语言处理工具。所以我希望它能在这里对我有所帮助 :( - Amit K. Saha

0

显然,在尝试了若干天之后,我的发现是,PrettyTime虽然处理自然语言处理日期和时间相关的东西非常好,但不能胜任这个任务。最终,我用了各种格式的SimpleDateFormat,这不是最好的解决方案,只是一个临时的解决方案。如果有人看到这个帖子,请分享你们的经验。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接