定义一个日期类Date,该类对象存放一个日期

img


#include<stdio.h>
#include<iostream.h>
#include "windows.h"
class Date{
private:
    int year;
    int month;
    int day;
    int IsCurrentDate(int Year,int Month,int Day);//是不是正确的日期。
public:
    Date();
    Date(int y,int m,int d);
    Date(const Date &other);
    void GetDate();
    int GetYear();
    int GetMonth();
    int GetDay();
    void SetDate(int y,int m,int d);
    void AddOneDay();
 
};
Date::Date(){//不赋值时,默认当前日期
    SYSTEMTIME ct;
    GetLocalTime(&ct);//如果用GetSystemTime(&ct);那么获取的是格林尼治标准时间
    year=ct.wYear;
    month=ct.wMonth;
    day=ct.wDay;
}
Date::Date(int y,int m,int d):year(y),month(m),day(d){
    IsCurrentDate(y,m,d);
}
Date::Date(const Date &other){
    year=other.year;
    month=other.month;
    day=other.day;
}
void Date::GetDate(){
    cout<<year<<"年"<<month<<"月"<<day<<"日"<<endl;
}
int Date::GetYear(){
    return year;
}
int Date::GetMonth(){
    return month;
}
int Date::GetDay(){
    return day;
}
void Date::SetDate(int y,int m,int d){
    year=y;
    month=m;
    day=d;
}
void Date::AddOneDay(){
    int sign=0;
    if ((year%4==0&&year%100!=0)||year%400==0)
    {
        sign =1;
    }
        switch (month)
        {
        case 1:
        case 3:
        case 5:
        case 7:
        case 8:
        case 10:
             if(day<31){
                    day=day+1;
                }else{
                    day=1;
                    month=month+1;
                }
            break;
        case 4:
        case 6:
        case 9:
        case 11:
            if(day<30){
                    day=day+1;
                }else{
                    day=1;
                    month=month+1;
                }
            break;
        case 2:
            if (sign ==1)
                if(day<29){
                    day=day+1;
                }else{
                    day=1;
                    month=3;
                }
            else
            if(day<28){
                    day=day+1;
                }else{
                    day=1;
                    month=3;
                }
            break;
        case 12:
            if(day<30){
                    day=day+1;
                }else{
                    day=1;
                    month=1;
                    year=year+1;
                }
                break;
        default:
            break;
        }
}
 
int Date::IsCurrentDate(int year,int month,int day){
        int sign=0,dayvalid;
    if ((year%4==0&&year%100!=0)||year%400==0)
    {
        sign =1;
    }
    if (month>=1&&month<=12)
    {
        switch (month)
        {
        case 1:
        case 3:
        case 5:
        case 7:
        case 8:
        case 10:
        case 12:
            dayvalid = 31;
            break;
        case 4:
        case 6:
        case 9:
        case 11:
            dayvalid = 30;
            break;
        case 2:
            if (sign ==1)
                dayvalid = 29;
            else
                dayvalid = 28;
            break;
        default:
            break;
        }
        if (!(day >0&&day <=dayvalid))
        {
            cout<<"日期格式错误"<<endl;
            return 2;
        }
    }
    else
    {
        cout<<"月份格式错误"<<endl;
        return 1;
    }
 
    cout<<"日期格式正确"<<endl;
    return 0;
}
int main(){
    Date d;
    d.AddOneDay();
    d.GetDate();
    Date dt(2014,2,28);
    dt.AddOneDay();
    dt.GetDate();
    return 0;
}