您好,欢迎来到爱go旅游网。
搜索
您的当前位置:首页c++时间程序

c++时间程序

来源:爱go旅游网
//闽南师范大学-数学与统计学院-09/10金融班-吴童鞋 #include #include using namespace std;

int max[]={0,31,28,31,30,31,30,31,31,30,31,30,31}; //class Date; class Time {

public: int hour; int minute; int sec; Time(); Time(int h,int m,int s){hour=h;minute=m;sec=s;} void get_time(); //void show_time(Date &); int pd_time(int,int,int); };

class Date {

public: int year; int month; int day; Date(); Date(int y,int m, int d){year=y;month=m;day=d;} void get_date(); void show_date(); int pd_date(int,int,int); /*友元函数*/ //friend void Time::show_time(Date &); };

/*由基类Time派生,用来放计算结果几天几小时几分几秒的类*/ class Js:public Time {

public:

int tian; Js():Time(){tian=0;}

Js(int t,int h,int m,int s):Time(h,m,s){tian=t;} void get_js();

void show_js(){cout</*由基类Time和基类Date派生的类Timedate,重载运算符函数作为成员函数*/ class Timedate:public Date,public Time {

public: Timedate():Date(),Time(){} Timedate(int y,int mon,int d,int h,int min,int s):Date(y,mon,d),Time(h,min,s){} void

show_timedate(){printf(\"%04d-%02d-%02d__%02d:%02d:%02d\c);} Timedate operator + (Js a); Timedate operator - (Js b); Js operator - (Timedate td); };

/*时间的成员函数*/ Time::Time() { hour=0; minute=0; sec=0; }

void Time::get_time() { int h,m,s; cout<<\"请输入时、分、秒:\"<>h>>m>>s;

while(!pd_time(h,m,s)) {

cout<<\"输入有误,正确格式为:00:00:00-23:59:59。\"<>h>>m>>s; } hour=h; minute=m; sec=s; }

/*void Time::show_time(Date &d) {

printf(\"%04d-%02d-%02d\ printf(\"%02d:%02d:%02d\\n\}*/

int Time::pd_time(int h,int m,int s) /*判断时间*/ {

if(h<=23&&m<=59&&s<=59)return 1; else return 0; }

/*年月日的成员函数*/ Date::Date()

{ year=0; month=0; day=0; }

void Date::get_date() {

int y,x,z;

cout<<\"请输入年、月、日:\"<>y>>x>>z;

while(!pd_date(y,x,z)) {

cout<<\"请再一次输入年、月、日:\"<>y>>x>>z; } year=y; month=x; day=z; }

void Date::show_date() { cout<int Date::pd_date(int y,int x,int z) /*判断日期*/ { if(y%4==0&&y%100!=0||y%400==0)max[2]=29;else max[2]=28; if(x>12||x<=0) {

cout<<\"月份的格式输入有误,正确格式为:1-12。\"<if(x<13&&z>max[x]) {

cout<<\"日期的格式输入有误\"<return 0; }

else return 1; }

//派生类Js的成员函数 void Js::get_js() { int x1,x2,x3,x4; cout<<\"请输入要计算的天数、时数、分钟数及秒数\"<cin>>x1>>x2>>x3>>x4; tian=x1;hour=x2;minute=x3;sec=x4; }

/*派生类timedate的成员函数;重载运算符函数*/

Timedate Timedate::operator + (Js a) /*加法:一段时间后的日期是d*/ {

Timedate td;

td.sec=sec+a.sec;

if(td.sec>=60){td.sec=td.sec-60;td.minute=td.minute+1;}

td.minute=td.minute+minute+a.minute;

if(td.minute>=60){td.minute=td.minute-60;td.hour=td.hour+1;}

td.hour=td.hour+hour+a.hour;

if(td.hour>=24){td.hour=td.hour-24;td.day=td.day+1;}

td.day=td.day+day+a.tian; td.month=month; td.year=year;

if(td.year%4==0&&td.year%100!=0||td.year%400==0)max[2]=29;else max[2]=28; while(td.day>max[td.month]) {

if(td.year%4==0&&td.year%100!=0||td.year%400==0)max[2]=29;else max[2]=28;

td.day=td.day-max[td.month]; td.month++; if(td.month==13) {

td.month=1; td.year++; } } return td; }

Timedate Timedate::operator - (Js b) /*减法:一段时间前的日期是d*/ {

Timedate td; td.sec=sec-b.sec;

if(td.sec<0){td.sec=td.sec+60;td.minute=td.minute-1;}

td.minute=td.minute+minute-b.minute;

if(td.minute<=0){td.minute=td.minute+60;td.hour=td.hour-1;}

td.hour=td.hour+hour-b.hour;

if(td.hour<=0){td.hour=td.hour+24;td.day=td.day-1;}

td.day=td.day+day-b.tian; td.month=month; td.year=year;

while(td.day<=0) {

td.month--; if(td.month==0) {

td.month=12; td.year--; }

if(td.year%4==0&&td.year%100!=0||td.year%400==0)max[2]=29;else max[2]=28;

td.day=td.day+max[td.month]; } return td; }

Js Timedate::operator - (Timedate td) /*减法:2个时间点相距多长时间*/ {

Js j; int i;

int a1=0;int a2=0;int a3=0; if(yearfor(i=year+1;iif(i%4==0&&i%100!=0||i%400==0)a1=a1+366; else a1=a1+365; }

if(year%4==0&&year%100!=0||year%400==0)max[2]=29;else max[2]=28; for(i=month+1;i<=12;i++) {

a2=a2+max[i]; }

a2=a2+(max[month]-day-1);

if(td.year%4==0&&td.year%100!=0||td.year%400==0)max[2]=29;else

max[2]=28;

for(i=td.month-1;i>=1;i--) {

a3=a3+max[i]; }

a3=a3+td.day;

j.sec=(60-sec)+td.sec;

if(j.sec>=60){j.sec=j.sec-60;j.minute=j.minute+1;}

j.minute=j.minute+(60-minute-1)+td.minute;

if(j.minute>=60){j.minute=j.minute-60;j.hour=j.hour+1;}

j.hour=j.hour+(24-hour-1)+td.hour;

if(j.hour>=24){j.hour=j.hour-24;j.tian=j.tian+1;} }

if(year>td.year) {

for(i=td.year+1;iif(i%4==0&&i%100!=0||i%400==0)a1=a1+366; else a1=a1+365; }

if(td.year%4==0&&td.year%100!=0||td.year%400==0)max[2]=29;else max[2]=28;

for(i=td.month+1;i<=12;i++) {

a2=a2+max[i]; }

a2=a2+(max[td.month]-td.day-1);

if(year%4==0&&year%100!=0||year%400==0)max[2]=29;else max[2]=28; for(i=month-1;i>=1;i--) {

a3=a3+max[i]; } a3=a3+day;

j.sec=(60-td.sec)+sec;

if(j.sec>=60){j.sec=j.sec-60;j.minute=j.minute+1;}

j.minute=j.minute+(60-td.minute-1)+minute;

if(j.minute>=60){j.minute=j.minute-60;j.hour=j.hour+1;}

j.hour=j.hour+(24-td.hour-1)+hour;

if(j.hour>=24){j.hour=j.hour-24;j.tian=j.tian+1;} }

if(year==td.year) {

while(year%4==0&&year%100!=0||year%400==0) { max[2]=29; } if(monthif(j.sec>=60){j.sec=j.sec-60;j.minute=j.minute+1;}

j.minute=j.minute+(60-minute-1)+td.minute;

if(j.minute>=60){j.minute=j.minute-60;j.hour=j.hour+1;}

j.hour=j.hour+(24-hour-1)+td.hour;

if(j.hour>=24){j.hour=j.hour-24;j.tian=j.tian+1;} } if(month>td.month) { for(i=td.month+1;iif(j.sec>=60){j.sec=j.sec-60;j.minute=j.minute+1;}

j.minute=j.minute+(60-td.minute-1)+minute;

if(j.minute>=60){j.minute=j.minute-60;j.hour=j.hour+1;}

j.hour=j.hour+(24-td.hour-1)+hour;

if(j.hour>=24){j.hour=j.hour-24;j.tian=j.tian+1;} } if(month==td.month) { if(daya3=td.day-day-1; j.sec=(60-sec)+td.sec;

if(j.sec>=60){j.sec=j.sec-60;j.minute=j.minute+1;}

j.minute=j.minute+(60-minute-1)+td.minute;

if(j.minute>=60){j.minute=j.minute-60;j.hour=j.hour+1;}

j.hour=j.hour+(24-hour-1)+td.hour;

if(j.hour>=24){j.hour=j.hour-24;j.tian=j.tian+1;} }

if(day>td.day) { a3=day-td.day-1; j.sec=(60-td.sec)+sec;

if(j.sec>=60){j.sec=j.sec-60;j.minute=j.minute+1;}

j.minute=j.minute+(60-td.minute-1)+minute;

if(j.minute>=60){j.minute=j.minute-60;j.hour=j.hour+1;}

j.hour=j.hour+(24-td.hour-1)+hour; if(j.hour>=24){j.hour=j.hour-24;j.tian=j.tian+1;} } if(day==td.day) { if(hour>td.hour) { j.sec=sec-td.sec; if(j.sec<0){j.sec=j.sec+60;j.minute=j.minute-1;} j.minute=j.minute+minute-td.minute; if(j.minute<0){j.minute=j.minute+60;j.hour=j.hour-1;} j.hour=j.hour+hour-td.hour; }

if(hourtd.minute)

{ j.sec=sec-td.sec; if(j.sec<0){j.sec=j.sec+60;j.minute=j.minute-1;} j.minute=j.minute+minute-td.minute; } if(minute=td.sec)j.sec=sec-td.sec; else j.sec=td.sec-sec; j.minute=0; } j.hour=0; } j.tian=0; } } }

j.tian=j.tian+a1+a2+a3; return j; }

/*主函数*/ int main() { Js j1,j2;

Timedate td1,td2,tda,tdb; cout<<\"1、计算某个时间点加上一段时间后是什么时候;\"<cout<<\" \";td1.show_timedate();cout<cout<<\"*******************************************************\"<cout<<\"*******************************************************\"<

因篇幅问题不能全部显示,请点此查看更多更全内容

Copyright © 2019- igat.cn 版权所有 赣ICP备2024042791号-1

违法及侵权请联系:TEL:199 1889 7713 E-MAIL:2724546146@qq.com

本站由北京市万商天勤律师事务所王兴未律师提供法律服务