【发布时间】:2012-10-24 10:57:37
【问题描述】:
我目前正在将日期解析为程序。
格式可以是以下形式:
DDMMYYYY
DDMMYY
DDMM
DD/MM/YYYY
DD/MM/YY
DD/MM
除了日期之外,还会包含其他内容,如下所示:
19/12/12 0800 1000
这打破了我当前使用 boost::date_time 和标记器的实现。
对于这种情况,最好的建议是什么?我是否能够有一个更好的实现来允许以下内容:
19 Sep 12 // DD MMM YY
我的想法是将它们以 DDMMYYYY 形式的字符串形式返回,以便在程序的其他部分使用。这是最好的方法还是有更好的建议/替代方案?
*编辑:
决定服用 DDMMYYYY、DDMMYY 和 DDMM 不太可行。只能使用带有反斜杠的日期。
输出保持不变,格式为:DDMMYYYY
【问题讨论】:
-
你知道字符串的哪一部分是日期吗?然后,您可以提取该部分并使用您的解析器代替。
-
不,它非常灵活。我想到的是使用正则表达式
-
您的示例数据看起来不明确。日期可能是四位数字,但在示例中还有其他四位数字不是日期。像
19/12/12 1000 0801这样的情况会发生吗?在这种情况下,您有两个可能的日期。您将如何决定使用哪一个?或者你会将两者都算作日期? -
如果它真的是所有这些,在文本中的任何位置,并且其中可以有其他四位、六位或八位数字,那么你几乎迷路了,因为它做不到(没有额外信息)。
-
在这种情况下,我假设带有反斜杠的标记是日期,4 位数字的标记是时间。
标签: c++ regex string validation boost