我必须写2个函数。将日期作为字符串并检查其是否为mm / dd / yy格式的日期;如果它的格式不正确,则应进行编辑以使其成为正确的格式。另一个函数应该将验证日期转换为格式“Month dd,20yy”。
我很确定我可以处理第二个功能,但我遇到了第一个问题。我只是不知道如何检查它是否以那种格式......任何想法?
我认为这样可行,但似乎没有...
更新的代码:
bool dateValidation(string shipDate)
{
string temp;
if(shipDate.length() == 8 )
{
if(shipDate[2] == '/' && shipDate[5] =='/')
{
int tempDay, tempMonth, tempYear;
//Gather month
temp = shipDate[0];
temp += shipDate[1];
//convert string to int
tempMonth = temp.atoi;
temp = "";
//Gather day
temp = shipDate[3];
temp += shipDate[4];
//convert string to int
tempDay = temp.atoi;
temp = "";
//Gather year
temp = shipDate[6];
temp += shipDate[7];
//convert string to int
tempYear = temp.atoi;
temp = "";
if(tempMonth > 0 && tempMonth <= 12)
{
if(tempMonth == 9 ||
tempMonth == 4 ||
tempMonth == 6 ||
tempMonth == 11 ||)
{
if(tempDay > 0 && tempDay <= 30)
{
if 30 days
}
}
else if(tempMonth == 2)
{
if(tempDay > 0 && tempDay <= 28)
{
if 28 days
}
}
else
{
if(tempDay > 0 && tempDay <= 31)
{
if 31 days
}
}
}
}
}
}
答案 0 :(得分:0)
您要检查4件事:
这应该考虑格式,但如果你想确保日期有效:
答案 1 :(得分:0)
这看起来很像我即将评分的项目......如果是我即将评分的项目,你应该验证它是否符合格里高利历。 2012年1月1日绝对有效,但您可能想要做什么以及我希望您考虑的是创建一个切换语句来检查2012年1月12日和10/2/2012等格式,因为它们是有效的。然后从这些解析月份日和年份。然后验证它们是否在公历的限制范围内。如果它是一个我猜它的类,你应该考虑将验证作为一个单独的函数来解析函数。
首先询问日期是否太长,如果没有,是否太短,如果不是哪个版本,则将d m y传递给验证函数。这种模块化将简化您的代码并减少指令。
类似
bool dateValidation(string shipDate) { string temp;
switch(shipDate.length())
{
case(10):
// do what your doing
verify(m,d,y);
break;
case(8):
//dealing with single digits
// verify 1 and 3 are '/' and the rest are numbers
verifiy(m,d,y);
break;
case(9):
//a little more heavy lifting here
// but its good thinking for a new programmer
verifiy(m,d,y);
break;
default:
//fail message
break;
}