我有一堆日期要通过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)。
答案 0 :(得分:0)
由于您的输入可以是多种格式,我建议使用简单的状态机。状态机将允许您备份并重试不同的模式。
使用std::getline
将日期读入std::string
类型。
您可以使用std::istringstream
来解析数据。