C ++提取子字符串并转换为特定的日期格式

时间:2016-05-24 15:42:17

标签: c++ regex date date-formatting

我有一堆日期要通过C ++转换为YYYYMMDD格式。我目前有以下代码,它只是通过linux date命令运行它:

#river {
top:48.57%;
}

这处理大多数日期格式,而无法处理的日期格式返回“99991231”。我有许多格式的日期,如

      string shell_arg = inputStr;
      shell_arg = "'" + shell_arg + "'";
      string cmd="date -d " + shell_arg +  " +%Y%m%d 2>/dev/null";

      FILE *ls = popen(cmd.c_str(), "r");
      char retval[100];
      fgets(retval, sizeof(retval), ls);

      pclose(ls);

      if(!isdigit(retval[0]))
      {   
          strcpy(retval,"99991231");
      }

      return retval;

应该评估每年的第一个月,例如

"Sep- 13"
"12 -Oct"
"13-Nov"

分别你会怎么做到这一点?我应该注意,如果我们要使用正则表达式,我的配置只能使用GNU C库(使用regexec和regcomp,而不是regex_match)。

1 个答案:

答案 0 :(得分:0)

由于您的输入可以是多种格式,我建议使用简单的状态机。状态机将允许您备份并重试不同的模式。

使用std::getline将日期读入std::string类型。

您可以使用std::istringstream来解析数据。