#include <stdio.h> int main() { int time_add(char[],char[]); char time[15]={0}; char add[15]={0}; printf("Input the current time:"); scanf("%s",time); printf("Input the time to be added:"); scanf("%s",add); time_add(time,add); printf("%s\n",time); return 0; } int time_add(char time[],char add[]) { int func(int day,int add_day,int month,bool is_leap_year,char mORd); bool isLeapYear(int year); int year,month,day,hour,minute,second; int add_year,add_month,add_day,add_hour,add_minute,add_second; bool is_leap_year; sscanf(time,"%4d%2d%2d%2d%2d%2d",&year,&month,&day,&hour,&minute,&second); sscanf(add,"%4d%2d%2d%2d%2d%2d",&add_year,&add_month,&add_day,&add_hour,&add_minute,&add_second); is_leap_year=isLeapYear(year); add_minute+=(second+add_second)/60; second=(second+add_second)%60; add_hour+=(minute+add_minute)/60; minute=(minute+add_minute)%60; add_day+=(hour+add_hour)/24; hour=(hour+add_hour)%24; add_month+=func(day,add_day,month,is_leap_year,'m'); day=func(day,add_day,month,is_leap_year,'d'); add_year+=(month+add_month<=12)?0:(month+add_month)/12; month=(month+add_month==12)?12:(month+add_month)%12; year+=add_year; sprintf(time,"%04d%02d%02d%02d%02d%02d",year,month,day,hour,minute,second); return 0; } int func(int day,int add_day,int month,bool is_leap_year,char mORd) { int day_temp,add_month=0,i; int m[13]={0,31,28,31,30,31,30,31,31,30,31,30,31}; if(is_leap_year) { m[2]=29; } day_temp=day+add_day; for(i=(month==12)?1:month;day_temp>m[i];i++) { day_temp-=m[i]; add_month++; i=(i==12)?1:i; } if('m'==mORd) { return add_month; } if('d'==mORd) { return day_temp; } } bool isLeapYear(int year) { if((year%400==0)||(year%100!=0)&&(year%4==0)) { return true; } else { return false; } }
此程序已考虑到各月份天数,以及闰年的情况
时间加法
最新推荐文章于 2024-02-25 17:29:38 发布