C++ 从文本中发现日期的库?

C++ 从文本中发现日期的库?,c++,parsing,date,nlp,string-parsing,C++,Parsing,Date,Nlp,String Parsing,我需要从绳子里抽出一个日期。因为不是每个人在打印日期时都使用,所以为可能使用的每个可能的日期格式编写日期解析器是不切实际的,我需要处理尽可能多的日期格式-我不控制数据,也不能期望数据以特定的格式出现 这似乎是一个很久以前就已经解决的问题,但我的谷歌浏览器太弱,无法找到解决方案( 是否已经存在一个C++库,给定一个字符串,它将返回该字符串中引用的月份、日、年、小时、分钟、秒等,如果有的话? 伪代码: string s1 = "There is an expected meteor shower t

我需要从绳子里抽出一个日期。因为不是每个人在打印日期时都使用,所以为可能使用的每个可能的日期格式编写日期解析器是不切实际的,我需要处理尽可能多的日期格式-我不控制数据,也不能期望数据以特定的格式出现

这似乎是一个很久以前就已经解决的问题,但我的谷歌浏览器太弱,无法找到解决方案(

是否已经存在一个C++库,给定一个字符串,它将返回该字符串中引用的月份、日、年、小时、分钟、秒等,如果有的话?

伪代码:

string s1 = "There is an expected meteor shower this Thursday,"
            "August 15th 2013 at 4:39 AM.";
string s2 = "20130815T04:39:00";
date d1 = magicConverter(s1);
date d2 = magicConverter(s2);
assert(d1 == d2);

您可以使用中的代码,但需要配置一个掩码,该掩码告诉代码使用的是哪种时间格式。如果您编写一个类例程,该例程包含一个掩码和一个字符串,并且可以按您喜欢的任何格式打印时间,那么您应该做好准备。如果它还支持Daynames和Monthnam,您必须查看更多详细信息我让它在python中工作,有一个模块提供了一个看起来几乎相同的函数

有关更多详细信息:

请再看一次2013-08-03的例子。没有人,也没有计算机能够告诉你这个日期是8月还是4月,除了有一个面具告诉你JJJ-MM-DD或JJJ-DD-MM。而且这个图书馆可能只告诉你标准的蒙面时间。所以在这种情况下,它可能会把你带到8月。但是正如你所说的,它可以是任何日期声明在上,因此它不需要遵循标准,因此它也可以表示三月。另一种可能性是从上下文中告诉您日期(例如,一个表中包含所有te相同时间格式的列,通过查找增加值(如果您仅在一年内每月查看一天,也会失败)


另一个例子…如果我问你2013-05-04…它属于哪个月?你可能会告诉我…四月。我会回答“不,是五月四日”5月和4月5日也是如此。如果你告诉我如何用两种可能的解决方案来解决这个难题,我会理解你的否决票…请在否决试图帮助你的人之前考虑一下。

这不起作用。正如我在问题中提到的,我特别不知道也无法控制日期的格式。但是如果你不知道日期的格式,你的代码应该如何知道它。代码只看到字符。如果不知道,它甚至无法区分2013-08-03,如果现在不知道08或03是哪一天。我认为不知道确切的格式是不可能的。但你会很接近我的建议…实际上,存在这样的Java库可以做到这一点。java在C++ C++应用程序中集成java并不是我现在愿意的选择。我在C++中寻找类似斯坦福的代码> SuTime<代码>的东西。我将围绕
SUTime
创建一个服务,通过套接字接受原始句子,以发回带标记的句子。Javascript日期解析器非常健壮……您可以看看它们在一些更流行的引擎中做了什么