//	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);
	
	
}

C++简单年月日的功能实现的更多相关文章

  1. ASP.NET MVC 学习4、Controller中添加SearchIndex页面,实现简单的查询功能

    参考:http://www.asp.net/mvc/tutorials/mvc-4/getting-started-with-aspnet-mvc4/examining-the-edit-method ...

  2. Web---创建Servlet的3种方式、简单的用户注册功能

    说明: 创建Servlet的方式,在上篇博客中,已经用了方式1(实现Servlet接口),接下来本节讲的是另外2种方式. 上篇博客地址:http://blog.csdn.net/qq_26525215 ...

  3. js+html+css简单的互动功能页面(2015知道几乎尖笔试题)http://v.youku.com/v_show/id_XMTI0ODQ5NTAyOA==.html?from=y1.7-1.2

    js+html+css实现简单页面交互功能(2015知乎前端笔试题) http://v.youku.com/v_show/id_XMTI0ODQ5NTAyOA==.html? from=y1.7-1. ...

  4. Spring 学习——基于Spring WebSocket 和STOMP实现简单的聊天功能

    本篇主要讲解如何使用Spring websocket 和STOMP搭建一个简单的聊天功能项目,里面使用到的技术,如websocket和STOMP等会简单介绍,不会太深,如果对相关介绍不是很了解的,请自 ...

  5. Django文件上传三种方式以及简单预览功能

    主要内容: 一.文件长传的三种方式 二.简单预览功能实现 一.form表单上传 1.页面代码 <!DOCTYPE html> <html lang="en"> ...

  6. 运用socket实现简单的ssh功能

    在python socket知识点中已经对socket进行了初步的了解,那现在就使用这些知识来实现一个简单的ssh(Secure Shell)功能. 首先同样是建立两个端(服务器端和客户端) 需求是: ...

  7. Jenkins实现简单的CI功能

    步骤一:安装JDK.Tomcat,小儿科的东西不在此详细描述 步骤二:下载安装Jenkins下载链接:https://jenkins.io/download/ 步骤三:将下载的jenkins.war部 ...

  8. jQuery实现简单前端搜索功能

    <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...

  9. Unity UGUI 实现简单拖拽功能

    说到拖拽,那必然离不开坐标,UGUI 的坐标有点不一样,它有两种坐标,一种是屏幕坐标,还有一种就是 UI 在Canvas内的坐标(暂时叫做ugui坐标),这两个坐标是不一样的,所以拖拽就需要转换. 因 ...

随机推荐

  1. linux 和windows 的定时任务

    linux http://www.cnblogs.com/thinksasa/archive/2013/06/06/3121030.html windows http://www.myhack58.c ...

  2. Ajax返回数据格式

      Ajax中返回数据的格式 Ajax中常见的返回数据的格式有三种:分别为文本,XML和JSON 返回的文本格式我们在上一堂课Ajax基础介绍中已经介绍过了 Ajax.php Form.html:通过 ...

  3. Web Scalability for Startup Engineers Tip&Techniques for Scaling You Web Application --读书笔记

    Web Scalability for Startup Engineers Tip&Techniques for Scaling You Web Application 第1章和第2章讲述可伸 ...

  4. P1042 乒乓球

    题目背景 国际乒联现在主席沙拉拉自从上任以来就立志于推行一系列改革,以推动乒乓球运动在全球的普及.其中11分制改革引起了很大的争议,有一部分球员因为无法适应新规则只能选择退役.华华就是其中一位,他退役 ...

  5. Web 前端开发代码规范(基础)

    一. 引言 对于一个多人团队来说,制定一个统一的规范是必要的,因为个性化的东西无法产生良好的聚合效果,规范化可以提高编码工作效率,使代码保持统一的风格,以便于代码整合和后期维护. 二. HTML/CS ...

  6. 读懂《HTML5网页开发实例详解》这本书

    你还在用Flash嘛?帮主早不用了 乔布斯生前在公开信<Flash之我见>中预言:像HTML 5这样在移动时代中创立的新标准,将会在移动设备上获得胜利. ——国际巨头Google.苹果等都 ...

  7. 指定ip地址登陆服务器

    [root@localhost ~]# cat /etc/hosts.allow ## hosts.allow   This file contains access rules which are ...

  8. 在Eclipse上运行Spark(Standalone,Yarn-Client)

    欢迎转载,且请注明出处,在文章页面明显位置给出原文连接. 原文链接:http://www.cnblogs.com/zdfjf/p/5175566.html 我们知道有eclipse的Hadoop插件, ...

  9. SVN客户端--TortoiseSVN使用说明

    TortoiseSVN是windows下其中一个非常优秀的SVN客户端工具.通过使用它,我们可以可视化的管理我们的版本库.不过由于它只是一个客户端,所以它不能对版本库进行权限管理. TortoiseS ...

  10. Windows上SVN服务器搭建【转】

    Subversion是优秀的版本控制工具,其具体的的优点和详细介绍,这里就不再多说.本文介绍Windows上 VisualSVN server 服务端和 TortoiseSVN客户端搭配使用: 现在S ...