zoukankan      html  css  js  c++  java
  • 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);
    	
    	
    }
  • 相关阅读:
    18 | 案例篇:内存泄漏了,我该如何定位和处理?
    17 | 案例篇:如何利用系统缓存优化程序的运行效率?
    16 | 基础篇:怎么理解内存中的Buffer和Cache?
    Scrapyd 改进第一步: Web Interface 添加 charset=UTF-8, 避免查看 log 出现中文乱码
    scrapy_redis 相关: 将 jobdir 保存的爬虫进度转移到 Redis
    lxml.etree.HTML(text) 解析HTML文档
    CSS/Xpath 选择器 第几个子节点/父节点/兄弟节点
    scrapy_redis 相关: 查看保存的数据
    scrapy 通过FormRequest模拟登录再继续
    python2 python3 转换,兼容
  • 原文地址:https://www.cnblogs.com/gzk1171848896/p/9435956.html
Copyright © 2011-2022 走看看