年月日 时间:
<strong>bool dateTime::IsDateTime(string dateTime)
{
bool iRet;
if (12 == dateTime.size())
{
for (int i = 0; i < dateTime.size(); i++)
{
if (isdigit(dateTime.at(0)))
{
iRet = true;
}
}
}
else
{
return false;
}
if (iRet)
{
istringstream isYear(dateTime.substr(0, 4));
long year;
isYear >> year;
long month;
istringstream isMonth(dateTime.substr(4, 2));
isMonth >> month;
istringstream isDay(dateTime.substr(6, 2));
long day;
isDay >> day;
istringstream isHour(dateTime.substr(8, 2));
long hour;
isHour >> hour;
istringstream isMin(dateTime.substr(10, 2));
long min;
isMin >> min;
if( month == 0 || day == 0)
{
return false;
}
const int days[] = { 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31 };
bool leapYear = (
( ((year % 4)==0) && ((year % 100)!=0) ) ||
((year % 400)==0)
);
if(month < 1 || month > 12){
return false;
}
auto dayOfMonth = days[month - 1] + ((month==2 && leapYear)?1:0);
if(day < 1 || day > dayOfMonth)
{
return false;
}
if (((0 <= hour) && (hour<=23))
&& ((0 <= min) && ( min<=59)))
{
return true;
}
}
}
</strong>
年月日:
<strong>bool date::check_date(
long long year,
long long month,
long long day
){
if( month == 0 || day == 0){
return false;
}
const int days[] = { 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31 };
bool leapYear = (
( ((year % 4)==0) && ((year % 100)!=0) ) ||
((year % 400)==0)
);
if(month < 1 || month > 12){
return false;
}
auto dayOfMonth = days[month - 1] + ((month==2 && leapYear)?1:0);
if(day < 1 || day > dayOfMonth){
return false;
}
return true;
}
</strong>
时间:
bool time::check_time(
long long hour,
long long min,
long long sec
){
return(
( (0 <= hour) && (hour<=23) ) &&
( (0 <= min) && ( min<=59) ) &&
( (0 <= sec) && ( sec<=59) )
);
}