1

我有一个表示 24 小时时间的输入字符串。有效输入是字符串,例如:

7:04
07:4
7:4
07:04

一个无效的输入字符串显然是这样的25:68。有没有简单的方法来验证时间格式,然后在时间为今天的情况下以纪元格式解析时间?这里有可能派上用场的任何 boost 库吗?

4

3 回答 3

2

您可以使用 strptime 来完成,这是类 Unix 系统上的标准:http: //www.kernel.org/doc/man-pages/online/pages/man3/strptime.3.html

于 2013-02-17T14:09:39.973 回答
2

我看到两个选项:

  1. 简单的正则表达式或 boost::xpressive(我更喜欢它)。

  2. 获取分号之间的数字并将它们转换为数字,然后检查它们的值。像这样的东西:

    string sTime("53:30");
    int iSemiColon = sTime.find(':');       
    if (atoi(sTime.substr(0, iSemiColon).c_str()) >= 24) return false;
    if (atoi(sTime.substr(iSemiColon + 1).c_str()) >= 60) return false;
    
于 2013-02-17T14:50:47.970 回答
1

看到这个答案。如果您不限于 STL,则可以将boost.Regex其用于验证部分,尽管这是一个非常简单的问题,您可以轻松推出自己的解决方案。

于 2013-02-17T14:10:38.317 回答