【问题标题】:How to validate input string in short time format如何以短时间格式验证输入字符串
【发布时间】:2013-02-17 14:06:21
【问题描述】:

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

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

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

【问题讨论】:

标签: c++ validation time-format


【解决方案1】:

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

【讨论】:

    【解决方案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;
      

    【讨论】:

      【解决方案3】:

      this answer。如果您不限于 STL,您可以使用 boost.Regex 进行验证部分,尽管这是一个非常简单的问题,您可以轻松推出自己的解决方案。

      【讨论】:

        猜你喜欢
        • 2020-10-27
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2010-09-28
        • 1970-01-01
        • 2019-04-16
        • 1970-01-01
        相关资源
        最近更新 更多