题目没说用指针把,不用指针和友元函数也能实现
代码如下:
#include <iostream>
#include <time.h>
using namespace std;
class Date
{
private:
int year, month, day;
public:
Date() { int t = time(0); setDate(t); }
Date(int elapseTime)
{
setDate(elapseTime);
}
Date(int y, int m, int d) { year = y; month = m; day = d; }
//getter and seter
int getYear() { return year; }
int getMonth() { return month; }
int getDay() { return day; }
void setYear(int y) { year = y; }
void setMonth(int m) { month = m; }
void setDay(int d) { day = d; }
void setDate(int elapseTime)
{
int a[13] = { 0,31,28,31,30,31,30,31,31,30,31,30,31 };
int totalday = elapseTime / (24 * 3600);
day = totalday;
year = 1970;
month = 1;
while (day > 365)
{
if (isLeapYear(year))
day -= 366;
else
day -= 365;
year++;
}
//非闰年,并且当前天数是365天
if (!isLeapYear(year) && day == 365)
year++;
//如果是闰年
if (isLeapYear(year))
{
if (day <= 31)
month = 1;
else if (day <= 60)
{
month = 2;
day -= 31;
}
else if (day <= 91)
{
month = 3;
day -= 60;
}
else if (day <= 121)
{
month = 4;
day -= 91;
}
else if (day <= 152)
{
month = 5;
day -= 121;
}
else if (day <= 182)
{
month = 6;
day -= 152;
}
else if (day <= 213)
{
month = 7;
day -= 182;
}
else if (day <= 244)
{
month = 8;
day -= 213;
}
else if (day <= 274)
{
month = 9;
day -= 244;
}
else if (day <= 305)
{
month = 10;
day -= 274;
}
else if (day <= 335)
{
month = 11;
day -= 305;
}
else
{
month = 12;
day -= 305;
}
}
else
{
if (day <= 31)
{
month = 1;
}
else if (day <= 59)
{
month = 2;
day -= 31;
}
else if (day <= 90)
{
month = 3;
day -= 59;
}
else if (day <= 120)
{
month = 4;
day -= 90;
}
else if (day <= 151)
{
month = 5;
day -= 120;
}
else if (day <= 181)
{
month = 6;
day -= 151;
}
else if (day <= 212)
{
month = 7;
day -= 181;
}
else if (day <= 243)
{
month = 8;
day -= 212;
}
else if (day <= 273)
{
month = 9;
day -= 243;
}
else if (day <= 304)
{
month = 10;
day -= 273;
}
else if (day <= 334)
{
month = 11;
day -= 304;
}
else
{
month = 12;
day -= 334;
}
}
day = day + 1;
}
private:
int isLeapYear(int y) //判断是否是闰年
{
if (y % 4 == 0 && y % 100 != 0 || y % 400 == 0)
return 1;
else
return 0;
}
};
int main()
{
Date d(561555550);
cout << d.getYear() << "-" << d.getMonth() << "-" << d.getDay();
return 0;
}
您好,我是有问必答小助手,您的问题已经有小伙伴帮您解答,感谢您对有问必答的支持与关注!