C++简单年月日的功能实现

//	C++年月日判断初步代码
#include <iostream>

using namespace std;

class Data
{
	int year;
	int month;
	int day;
public:
	//判断日期是否有效
	bool data_check(int _year,int _month,int _day)
	{
		year = _year;
		month =  _month;
		day = _day;

		if(0 > year || 2018 < year) return false;
		if(0 > month || 12 < month) return false;
		if(0 > day || 31 < day) return false;
		return true;
	}
	//判断是否是闰年
	bool leap_year(int _year)
	{
		year = _year;
		if(year%400 == 0 || (year%4 == 0 &&year%100 != 0))//能被4,400整除除去被100整除的都是闰年
		{
			return true;
		}
		else 
		{
			return false;
		}
	}
	//下一天的日期
	void nextday(int _year,int _month ,int _day)
	{
		
		year = _year;
		month = _month;
		day = _day;
		switch(month)
		{
			case 1:
				if(31 == day)
				{
					month++;
					day = 1;
					break;
				}
			case 2:
				if((28 == day &&!leap_year(year))||(29 == day &&leap_year(year)))
				{
					month++;
					day = 1;
					break;
				}
			case 3:
				if(31 == day)
				{
					month++;
					day = 1;
					break;
				}
			case 4:
				if(30 == day)
				{
					month++;
					day = 1;
					break;
				}
			case 5:
				if(31 == day)
				{
					month++;
					day =1;
					break;
				}
			case 6:
				if(30 == day)
				{
					month++;
					day =1;
					break;
				}
			case 7:
				if(31 == day)
				{
					month++;
					day = 1;
					break;
				}
			case 8:
				if(31 == day)
				{
					month++;
					day =1;
					break;
				}
			case 9:
				if(30 == day)
				{
					month++;
					day = 1;
					break;
				}
			case 10:
				if(31 == day)
				{
					month++;
					day = 1;
					break;
				}
			case 11:
				if(30 == day)
				{
					month++;
					day = 1;
					break;
				}
			case 12:
				if(31 == day)
				{
					year++;
					month = 1;
					day = 1;
					break;
				}
		}
		cout << year << "." << month << "." << day << endl;
	}
	//列出下n天或者前n天的日期
	void nextday(int _year,int _month,int _day,int n)
	{
		year = _year;
		month = _month;
		day = _day;
		if(0 < n)
		{
			
			for(n =n+1;n>0;n--)
			{
				switch(month)
				{
					case 1:
						if(31 == day)
						{
							month++;
							day = 1;
							break;
						}else {
							day++;
							break;
						}
					case 2:
						if((28 == day &&!leap_year(year))||(29 == day &&leap_year(year)))
						{
							month++;
							day = 1;
							break;
						}else {
							day++;
							break;
						}
					case 3:
						if(31 == day)
						{
							month++;
							day = 1;
							break;
						}else {
							day++;
							break;
						}
					case 4:
						if(30 == day)
						{
							month++;
							day = 1;
							break;
						}else {
							day++;
							break;
						}
					case 5:
						if(31 == day)
						{
							month++;
							day =1;
							break;
						}
					case 6:
						if(30 == day)
						{
							month++;
							day =1;
							break;
						}else {
							day++;
							break;
						}
					case 7:
						if(31 == day)
						{
							month++;
							day = 1;
							break;
						}else day++;
					case 8:
						if(31 == day)
						{
							month++;
							day =1;
							break;
						}else {
							day++;
							break;
						}
					case 9:
						if(30 == day)
						{
							month++;
							day = 1;
							break;
						}else {
							day++;
							break;
						}
					case 10:
						if(31 == day)
						{
							month++;
							day = 1;
							break;
						}else {
							day++;
							break;
						}
					case 11:
						if(30 == day)
						{
							month++;
							day = 1;
							break;
						}else {
							day++;
							break;
						}
					case 12:
						if(31 == day)
						{
							year++;
							month = 1;
							day = 1;
							break;
						}else {
							day++;
							break;
						}
				}
			cout << year << "." << month << "." << day << endl;
			}
		}
		if(0 > n)
		{
			
			for(n =n-1;n<0;n++)
			{
				switch(month)
				{
					case 1:
						if(1 == day)
						{
							year--;							
							month =12;
							day = 31;
							break;
						}else {
							day--;
							break;
						}
					case 2:
						if(1 == day)
						{
							month--;
							day = 31;
							break;
						}else {
							day--;
							break;
						}
					case 3:
						if(1 == day)
						{
							month--;
							if(leap_year(year))
							{
								day = 29;
							}else{
								day = 28;
							}
							break;
						}else {
							day--;
							break;
						}
					case 4:
						if(1 == day)
						{
							month--;
							day = 31;
							break;
						}else {
							day--;
							break;
						}
					case 5:
						if(1 == day)
						{
							month--;
							day =30;
							break;
						}else {
							day--;
							break;
						}
					case 6:
						if(1 == day)
						{
							month--;
							day =31;
							break;
						}else {
							day--;
							break;
						}
					case 7:
						if(1 == day)
						{
							month--;
							day = 30;
							break;
						}else {
							day--;
							break;
						}
					case 8:
						if(1 == day)
						{
							month--;
							day =31;
							break;
						}else {
							day--;
							break;
						}
					case 9:
						if(1 == day)
						{
							month--;
							day = 31;
							break;
						}else {
							day--;
							break;
						}
					case 10:
						if(1 == day)
						{
							month--;
							day = 30;
							break;
						}else {
							day--;
							break;
						}
					case 11:
						if(1 == day)
						{
							month--;
							day = 31;
							break;
						}else {
							day--;
							break;
						}
					case 12:
						if(1 == day)
						{
							month--;
							day = 31;
							break;
						}else {
							day--;
							break;
						}
				}
			cout << year << "." << month << "." << day << endl;
			}
		}
	}
	

};
int main()
{
	Data *data = new Data;
	int year = 1997;
	int month = 2;
	int day = 28;
	int n = -137;
	cout << data->data_check(year,month,day) << endl;
	cout << data->leap_year(year) << endl;
	data-> nextday(year,month,day);
	data-> nextday(year,month,day,n);
	
	
}
原文地址:https://www.cnblogs.com/gzk1171848896/p/9435956.html