您的位置:首页 > 编程语言 > C语言/C++

C++判断时间格式满足yyyy-mm-dd-hh:mm与时间1小于时间2

2017-01-05 18:11 603 查看

C++判断时间格式满足yyyy-mm-dd-hh:mm与时间1小于时间2

#include <iostream>
#include <sstream>//调用istringstream需包含

using namespace std;

int stringToInt(string str)/*字符串转int*/
{
int result;
istringstream is(str);
is >> result;
return result;
}

bool CheckTime(string time)/*时间满足yyyy-mm-dd-hh:mm格式*/
{
bool judge = false;

/*符合字数为16*/
if(time.length()!=16)
return judge;

/*符合年>2017*/
int i;
string s;
for(i=0;i<4;i++)
s += time[i];
int year = stringToInt(s);
if(year<2017)
return judge;

/*符合01<=月<=12*/
s = "";//置空
s += time[5];
s += time[6];
int month = stringToInt(s);
if(month<1 || month>12)
return judge;

/*符合01<=日<=31*/
s = "";//置空
s += time[8];
s += time[9];
int day = string
4000
ToInt(s);
if(day<1 || day>31)
return judge;

/*符合00<=时<=24*/
s = "";//置空
s += time[11];
s += time[12];
int hour = stringToInt(s);
if(hour<0 || hour>=24)
return judge;

/*符合00<=分<=60*/
s = "";//置空
s += time[14];
s += time[15];
int minute = stringToInt(s);
if(minute<0 || minute>=60)
return judge;

/*符合横杆*/
static int dash[3]={4,7,10};
for(i=0;i<3;i++)
if(time[dash[i]]!='-')//不为横杆
return judge;

/*符合冒号*/
if(time[13]!=':')
return judge;

/*全部匹配*/
judge = true;
return judge;
}

bool CheckTime2(string time1,string time2)/*时间1<时间2*/
{
bool judge = false;

/*年*/
int i;
string s1,s2;
for(i=0;i<4;i++)
{
s1 += time1[i];
s2 += time2[i];
}
int year1 = stringToInt(s1);
int year2 = stringToInt(s2);

/*月*/
s1 = "";//置空
s2 = "";//置空
s1 += time1[5];
s1 += time1[6];
s2 += time2[5];
s2 += time2[6];
int month1 = stringToInt(s1);
int month2 = stringToInt(s2);

/*日*/
s1 = "";//置空
s2 = "";//置空
s1 += time1[8];
s1 += time1[9];
s2 += time2[8];
s2 += time2[9];
int day1 = stringToInt(s1);
int day2 = stringToInt(s2);

/*时*/
s1 = "";//置空
s2 = "";//置空
s1 += time1[11];
s1 += time1[12];
s2 += time2[11];
s2 += time2[12];
int hour1 = stringToInt(s1);
int hour2 = stringToInt(s2);

/*分*/
s1 = "";//置空
s2 = "";//置空
s1 += time1[14];
s1 += time1[15];
s2 += time2[14];
s2 += time2[15];
int minute1 = stringToInt(s1);
int minute2 = stringToInt(s2);

if(year1<year2)
{
return true;
}
else
{
if(year1==year2)
{
if(month1<month2)
{
return true;
}
else
{
if(month1==month2)
{
if(day1<day2)
{
return true;
}
else
{
if(day1==day2)
{
if(hour1<hour2)
{
return true;
}
else
{
if(hour1==hour2)
{
if(minute1<minute2)
{
return true;
}
else
{
return false;
}
}
else
{
return false;
}
}
}
else
{
return false;
}
}
}
else
{
return false;
}
}
}
else
{
return false;
}
}
return judge;
}
int main()
{
cout << CheckTime("2017-01-28-08:05") << "\t符合yyyy-mm-dd-hh:mm格式" << endl;
cout << CheckTime("2017-01-28-08:000") << "\t不符合字数" << endl;
cout << CheckTime("2000-01-28-08:05") << "\t不符合年>2017" << endl;
cout << CheckTime("2017-00-28-08:05") << "\t不符合01<=月<=12" << endl;
cout << CheckTime("2017-01-00-08:05") << "\t不符合01<=日<=31" << endl;
cout << CheckTime("2017-01-28-99:05") << "\t不符合00<=时<=24" << endl;
cout << CheckTime("2017-01-28-08:99") << "\t不符合00<=分<=60" << endl;
cout << CheckTime("2017-01-28.08:05") << "\t不符合横杆" << endl;
cout << CheckTime("2017-01-28-08.05") << "\t不符合冒号" << endl;

cout << endl << endl << endl;

cout << CheckTime2("2017-01-28-08:05","2017-01-28-08:06") << "\t符合时间1<时间2" << endl;
cout << CheckTime2("2018-01-28-08:05","2017-01-28-11:30") << "\t不符合年1<年2" << endl;
cout << CheckTime2("2017-12-28-08:05","2017-01-28-11:30") << "\t不符合月1<月2" << endl;
cout << CheckTime2("2017-01-31-08:05","2017-01-28-11:30") << "\t不符合日1<日2" << endl;
cout << CheckTime2("2017-01-28-12:05","2017-01-28-11:30") << "\t不符合时1<时2" << endl;
cout << CheckTime2("2017-01-28-11:30","2017-01-28-11:30") << "\t不符合分1<分2" << endl;
return 0;
}


内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: