java 字符串中获取时间_关于java:从字符串中提取各种格式的日期?

本问题已经有最佳答案,请猛点这里访问。

我想知道是否有一种简单的方法可以从Java中的String中提取首次遇到的日期。

我的程序将分析许多不同语言的String文本。 这些字符串可以包含日期。 由于语言(以及来源不同)的原因,我要考虑很多格式。

我首先想到了正则表达式,为我能找到的每种格式制作一个正则表达式...但是,例如"(d)d,yyyy"或" mm / dd / yyyy"或" dd-mon- yyyy" ...

因此,我想知道是否有一种更简单的方法可以通过使用DateFormat从字符串中提取日期,因此可以将找到的日期转换为" dd / mm / yyyy"。

谢谢您的帮助。 ^^

您可以使用SimpleDateFormat从字符串中获取日期,但字符串必须与格式完全匹配。您可以通过" dd.mm.yyyy"格式从" 11.11.2011"获取日期,但不能从"日期为:11.11.2011"获取日期。

它更多关于数据挖掘。

这是行不通的。或者说,除非您知道dateformat的可能性并且其中没有歧义,否则它无法正确完成。例如:输入:03042012,它是3rd April还是4th March?

如果您知道所有的atter俩,请尝试此[stackoverflow.com/questions/4024544/否则没有办法

@Kent好吧,我列出了许多可能性:month (d)d, yyyy,dd-mon-yyyy,mmddyy,mmddyyyy,ddmmyyyy,天,月dd , yyyy ...我想过要使用正则表达式,然后用DateFormat进行转换。 03/04的问题显然无法解决,我想选择一个或另一个,成功概率为50%。 ^^

@Malik在出现不确定性的情况下,您首先需要分析全文以寻找可以帮助您的启发式方法。例如如果发生12/25,但从未发生25/12,则格式更有可能是mm / dd。

@SashaSalauyou当然,当我找到第一个或第二个成员> 13时,也可以肯定知道它的dd / mm或mm / dd。 ^^

@Malik,您看到的问题比仅调用SimpleDateFormat#parse更为有趣和复杂。如果您成功了,那么对您而言,这将是一个伟大的练习。祝好运!

@Malik它仍然会被识别为日期,您可以对其应用进一步的逻辑。 ID建议创建有效模式列表,并逐个单词地在文本中进行迭代。然后,一旦获得日期,就可以从其他属性(例如语言)中得出正确的格式mm / dd或dd / mm,或者该文本中可能有更多日期来指示...

谢谢Sasha,我会努力的。 :) @Palcente我认为那将明显改善质量,谢谢您的建议!

我认为最好的解决方案是使用正则表达式,但是显然您必须知道所有可能的模式。

一种(可能的)方法是通过机器学习进行的:您可以提供一组有代表性的示例,并让算法为您找到模式。

您的问题确实与本文中解决的问题类似。

您可以尝试使用此网络应用为您找到一个好的正则表达式。

主要问题是您必须提供重要的示例。

我希望这能帮到您!

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值