输入任意日期时间 输出下一秒

来源:互联网 发布:用python做大数据分析 编辑:程序博客网 时间:2024/04/30 21:18

任意输入格式为2016/09/08 12:34:08

输出下一秒 也是按照上述的格式输出:

//任意输入日期时间,输出下一秒时间#include<iostream>#include<string>#include<vector>using namespace std;//string转化为intvoid stringtoint(string s, int p[]){vector<vector<char>>res(6);int index = 0;for (int i = 0; s[i] != '\0'; i++){if (s[i] == '/' || s[i] == ' ' || s[i] == ':')index++;elseres[index].push_back(s[i]);}int temp;for (int i = 0; i < res.size(); i++){temp = 0;for (int j = 0; j < res[i].size(); j++){temp = temp * 10 + (res[i][j] - '0');}p[i] = temp;}}//判断是否为闰年bool isleap(int year){if (year < 0)year = -year;return ((year % 4 == 0 && year % 100 != 0) || (year % 400 == 0));}//判断是否满足区间bool isinterval(int para, int mi, int ma){if (para<mi || para>ma) return false;return true;}//判断输入date,time是否合法bool isdatetime(int *year, int *month, int *day, int *hour, int *minute, int *second){if (year == NULL || month == NULL || day == NULL || hour == NULL || minute == NULL || second == NULL ||!isinterval(*second, 0, 59) || !isinterval(*minute, 0, 59) || !isinterval(*hour, 0, 23))return false;switch (*month){case 1:case 3:case 5:case 7:case 8:case 10:case 12:if (!isinterval(*day, 1, 31)){return false;}break;case 4:case 6:case 9:case 11:if (!isinterval(*day, 1, 30))return false;break;case 2:if (isleap(*year)){if (!isinterval(*day, 1, 29))return false;}else{if (!isinterval(*day, 1, 28))return false;}break;default:return false;}return true;}//nextsecond 输出打印void nextsecond(int *year, int *month, int *day, int *hour, int *minute, int *second){if (!isdatetime(year, month, day, hour, minute, second))return;(*second)++;if (*second == 60){*second = 0;(*minute)++;if (*minute == 60){*minute = 0;(*hour)++;if (*hour == 24){*hour = 0;(*day)++;switch (*month){case 1:case 3:case 5:case 7:case 8:case 10:case 12:if (*day == 32){*day = 1;(*month)++;}break;case 4:case 6:case 9:case 11:if (*day == 31){*day = 1;(*month)++;}break;case 2:if (isleap(*year)){if (*day == 30){*day = 1;(*month)++;}}else{if (*day == 29){*day = 1;(*month)++;}}break;}if (*month == 13){*month = 1;(*year)++;}}}}cout << *year << '/';if (*month < 10)cout << '0' << *month << '/';elsecout << *month << '/';if (*day < 10)cout << '0' << *day << ' ';elsecout << *day << ' ';if (*hour < 10)cout << '0' << *hour << ':';elsecout << *hour << ':';if (*minute < 10)cout << '0' << *minute << ':';else cout << *minute << ':';if (*second < 10)cout << '0' << *second << endl;elsecout << *second << endl;}int main(){string s;while (getline(cin, s)){int p[6];stringtoint(s, p);nextsecond(&p[0], &p[1], &p[2], &p[3], &p[4], &p[5]);}system("pause");return 0;}


0 0
原创粉丝点击