#include <iostream>
#include <windows.h>
#include <cstdio>
#include <cstdlib>
#include <ctime>
#include <conio.h>
using namespace std;
//最大使用数组 天数
//1095000 3000年
#define MAX 1095000
#define MAX_ 100
//建立日期结构体
struct Time {
int y;
int m;
int n;
};
Time time_MAX[MAX];
int MN[13]={0,31,28,31,30,31,30,31,31,30,31,30,31};
int MN_[13]={0,31,29,31,30,31,30,31,31,30,31,30,31};
//根据年月输出日
int f(int y,int m){
if((y%4==0&&y%100!=0)||y%400==0){
return MN_[m];
}
return MN[m];
}
//判断日期是否相等
bool Time_XX(Time time_1,Time time_2){
if(time_1.y==time_2.y&&time_1.m==time_2.m&&time_1.n==time_2.n){
return 1;
}
return 0;
}
//打印日期
void Time_p(Time time){
printf("%d %d %d\n",time.y,time.m,time.n);
return;
}
//遍历Y年到YY年 存入数组 time_MAX[MAX]
void Time_Y(int Y,int YY,int t=0,Time time[]=time_MAX){
int ii=1;
for(int i=Y;i<=YY;i++){
for(int j=1;j<=12;j++){
for(int z=1;z<=f(i,j);z++){
time[ii].y=i;
time[ii].m=j;
time[ii].n=z;
if(t!=0)
Time_p(time[ii]);
ii++;
}
}
}
return;
}
//搜索食品保质期(算差x天)
Time Time_X(Time time_x,int x,Time time[]=time_MAX){
//初始化3000年
Time_Y(time_x.y-MAX_,time_x.y+MAX_);
for(int i=1;i<=MAX;i++){
if(Time_XX(time_x,time_MAX[i])){
return time_MAX[i+x];
}
}
}
void Time_help(){
Time time_x;
int x;
int y;
int m;
Time time_1;
Time time_2;
int t=-1;
for(;;){
cout<<"功能1:根据年月输出日"<<endl;
cout<<"功能2:判断日期是否相等 Time_XX(Time time_1,Time time_2)"<<endl;
cout<<"功能3:打印日期 Time_p(Time time)"<<endl;
cout<<"功能4:遍历Y年到YY年 存入数组 time_MAX[MAX] Time_Y(int Y,int YY,int t=0,Time time[]=time_MAX) "<<endl;
cout<<"功能5:搜索食品保质期(算差x天) Time_X(Time time_x,int x,Time time[]=time_MAX)"<<endl;
cout<<endl;
cout<<"输入序号(输入0关闭):"<<endl;
cin>>t;
if(t==1){
cout<<"输入年和月:"<<endl;
cin>>y>>m;
cout<<y<<"年"<<m<<"月有"<<f(y,m)<<"天"<<endl;
}else if(t==2){
string a[2]={"不相等","相等"} ;
cout<<"输入日期1:"<<endl;
cin>>time_1.y>>time_1.m>>time_1.n;
cout<<"输入日期2:"<<endl;
cin>>time_2.y>>time_2.m>>time_2.n;
cout<<a[Time_XX(time_1,time_2)]<<endl;
}else if(t==3){
cout<<"输入日期1:"<<endl;
cin>>time_1.y>>time_1.m>>time_1.n;
Time_p(time_1);
}else if(t==4){
int Y,YY;
cout<<"输入Y和YY:"<<endl;
cin>>Y>>YY;
Time_Y(Y,YY,1);
}else if(t==5){
cout<<"输入日期:"<<endl;
cin>>time_x.y>>time_x.m>>time_x.n;
cout<<"输入保质期(100年之内 可改)(单位:天):"<<endl;
cin>>x;
cout<<"最佳食用期到:"<<endl;
Time_p(Time_X(time_x,x));
}else if(t==0){
break;
}
Sleep(1000);
system("cls");
}
return;
}
int main(){
cout<<"我能干什么?"<<endl;
cout<<"打开帮助函数Time_help()"<<endl;
cout<<"正在打开!"<<endl;
Sleep(3000);
system("cls");
Time_help();
return 0;
}
C++ 自制 TIME日期运算函数(自带注释以及帮助函数)
最新推荐文章于 2023-02-22 16:46:51 发布