1

我需要从字符串中提取日期。由于并非每个人在打印日期时都使用官方 ISO 格式,因此为每种可能使用的日期格式编写日期解析器是不切实际的,我需要处理尽可能多的日期格式 - 我不控制数据并且不能指望它以特定的格式出现。

这似乎是一个很久以前就已经解决的问题,但是我的 Google-fu 太弱了,无法找到解决方案。:(

是否已经存在一个 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);
4

1 回答 1

-1

您可能会使用此处的代码,但您需要配置一个掩码,告诉代码使用哪种时间格式。如果您编写一个类例程,它需要一个掩码和一个字符串,让您节省时间并且能够以您喜欢的任何格式打印,您应该做好充分的准备。如果它还支持 Daynames 和 Monthnames,您必须更详细地查看。我让它在 python 中工作,模块提供了一个看起来几乎相同的功能。

更多详情:

请再次查看示例 2013-08-03。没有人也没有电脑能告诉你这个日期是八月还是四月,除了有一个告诉 JJJJ-MM-DD 或 JJJJ-DD-MM 的面具。此外,这个库可能只会告诉您标准的屏蔽时间。因此,在这种情况下,它可能会将您带到八月。但正如你所说,它可以是任何日期声明,因此它不需要遵循标准,因此它也可以表示三月。另一种可能性是从上下文中告诉您有关日期的信息(例如,通过查找增加的时间格式的列中的所有表格(如果您仅查看一年中的每个月的一天,这也会失败) .

另一个例子......如果我问你2013-05-04......它属于哪个月份?你可以告诉我... 四月。我会在 5 月和 4 月 5 日回复“不,到 5 月 4 日”,反之亦然。如果你告诉我如何用两种可能的解决方案来解决这个难题,我会理解你的反对意见......请在反对试图帮助你的人之前考虑一下。

于 2013-08-14T20:56:00.100 回答