#include<iostream>
using namespace std;
int year, month, day;
bool isYear(int y) {
if ((y % 4 == 0 && y % 100 != 0) || y % 400 == 0)
return true;
return false;
}
int YearToNum(int y, int m, int d, int a[]) { //日期转数字
int title = 0;
for (int i = 1; i < y; i++) {
if (isYear(i)) title += 366;
else title += 365;
}
if (isYear(y) && m > 2) a[2] += 1; //判断是否为闰年,且月份大于2
for (int i = 1; i < m; i++) {
title += a[i];
}
title += d;
return title;
}
void NumToYear(int num, int a[]) { //数字转日期
while (num >= 0) {
year++;
if (isYear(year)) num -= 366;
else num -= 365;
}
/*此时num必定小于0,回血操作*/
if (isYear(year)) {
num += 366;
a[2] += 1;
}
else num += 365;
if (num == 0) {//刚好是整年
year--;
month = 12;
day = 31;
return;
}
while (num >= 0) {
month++;
num -= a[month];
}
//再次回血
num += a[month];
if (num == 0) { //刚好是整月
month--;
day = a[month];
return;
}
day = num;
}
int main() {
/*日期转换成数字*/
while (cin >> year >> month >> day) {
int a[] = {0, 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31};
cout << YearToNum(year, month, day, a) << endl;
}
/*数字转化成日期*/
int num;
while (cin >> num) {
year = month = 0;
int a[] = {0, 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31};
NumToYear(num, a);
cout << year << "-" << month << "-" << day << endl;
}
}
数字和日期之间的相互转换
最新推荐文章于 2024-03-14 12:16:28 发布