📄 td.c
字号:
short GetWeek(int ys,short ms, short ds)
{
int day_range;short week_day;
day_range=CountDays(ys,ms,ds);
day_range--;
week_day=(FirstWeek+day_range%7)%7;
//printf("The week day is:%d",week_day);
return week_day;
}
int CountDays( int ys,short ms, short ds )
{
int i;
int sumdays = 0;
/*2003/1205,talcon modify*/
//cout day by year
if(ys > 1980)
{
sumdays +=365 * (ys - 1980);
sumdays +=(ys - 1981)/4 + 1;
if(ys >=2100 )
{
sumdays -= (ys/100 -20)/4 * 3;
if(ys%100)
sumdays -= (ys/100 -20)%4 ;
else if (ys%400)
sumdays -= ( (ys-1)/100 -20)%4 ;
}
}
//count days by month
sumdays += 30*(ms-1) ;
if(ms<=7)
{
sumdays += ms/2;
}
else
{
sumdays +=(ms+1)/2;
}
if(ms>2)
{
if ((ys%400 ==0) || ((ys%4==0)&&(ys%100)))
sumdays -=1;
else
sumdays -=2;
}
#if 0
for (i=1980; i<ys; i++)
{
if ((i%400 == 0) || ((i%4 == 0) && (i%100)))
sumdays +=366;
else
sumdays +=365;
}
for (i=1; i<ms; i++)
{
if (((i<=7)&&(i%2)) ||((i>=8)&&(i%2==0)))
sumdays +=31;
else if (i == 2)
{
if ((ys%400 ==0) || ((ys%4==0)&&(ys%100)))
sumdays +=29;
else
sumdays +=28;
} else
sumdays +=30;
}
#endif
sumdays += ds;
return(sumdays);
}
void GetNextWeek(week_date* today,int week_range,week_date* next)
{
switch (week_range)
{
case 1:
switch (today->month)
{
case 1: case 3: case 5: case 7:
case 8: case 10: case 12:
today->day+=7;
if (today->day>31)
{
if (today->month!=12)
{
next->year=today->year;
next->month=today->month+1;
next->day=today->day-31;
} else
{
next->year=today->year+1;
next->month=1;
next->day=today->day-31;
}
} else
{
next->year=today->year;
next->month=today->month;
next->day=today->day;
}
break;
case 4: case 6: case 9: case 11:
today->day+=7;
if (today->day>30)
{
next->year=today->year;
next->month=today->month+1;
next->day=today->day-30;
} else
{
next->year=today->year;
next->month=today->month;
next->day=today->day;
}
break;
case 2:
today->day+=7;
if ((!(today->year%4))&&(today->year%100)||!((today->year)%400))
{
if (today->day>29)
{
next->year=today->year;
next->month=today->month+1;
next->day=today->day-29;
} else
{
next->year=today->year;
next->month=today->month;
next->day=today->day;
}
} else
{
if (today->day>28)
{
next->year=today->year;
next->month=today->month+1;
next->day=today->day-28;
} else
{
next->year=today->year;
next->month=today->month;
next->day=today->day;
}
}
break;
}
default:
break;
}
}
void GetNextMinute(date_time_minute* today,int minute_range,date_time_minute* next)
{
if (today->minute+minute_range>=0)
{
switch (today->month)
{
case 1: case 3: case 5: case 7:
case 8: case 10: case 12:
if (today->minute+minute_range>59)
if ((today->hour+(today->minute+minute_range)/60)>23)
if ((today->day+(today->hour+(today->minute+minute_range)/60)/24)>31)
if (today->month==12)
{
next->minute=(today->minute+minute_range)%60;
next->hour=(today->hour+(today->minute+minute_range)/60)%24;
next->day=today->day+(today->hour+(today->minute+minute_range)/60)/24-31;
next->month=1;
next->year=today->year+1;
} else
{
next->minute=(today->minute+minute_range)%60;
next->hour=(today->hour+(today->minute+minute_range)/60)%24;
next->day=today->day+(today->hour+(today->minute+minute_range)/60)/24-31;
next->month=today->month+1;
next->year=today->year;
}
else
{
next->minute=(today->minute+minute_range)%60;
next->hour=(today->hour+(today->minute+minute_range)/60)%24;
next->day=today->day+1;
next->month=today->month;
next->year=today->year;
}
else
{
next->minute=(today->minute+minute_range)%60;
next->hour=today->hour+1;
next->day=today->day;
next->month=today->month;
next->year=today->year;
}
else
{
next->minute=today->minute+minute_range;
next->hour=today->hour;
next->day=today->day;
next->month=today->month;
next->year=today->year;
}
break;
case 4: case 6: case 9: case 11:
if (today->minute+minute_range>59)
if ((today->hour+(today->minute+minute_range)/60)>23)
if ((today->day+(today->hour+(today->minute+minute_range)/60)/24)>30)
{
next->minute=(today->minute+minute_range)%60;
next->hour=(today->hour+(today->minute+minute_range)/60)%24;
next->day=today->day+(today->hour+(today->minute+minute_range)/60)/24-30;
next->month=today->month+1;
next->year=today->year;
} else
{
next->minute=(today->minute+minute_range)%60;
next->hour=(today->hour+(today->minute+minute_range)/60)%24;
next->day=today->day+1;
next->month=today->month;
next->year=today->year;
}
else
{
next->minute=(today->minute+minute_range)%60;
next->hour=today->hour+1;
next->day=today->day;
next->month=today->month;
next->year=today->year;
}
else
{
next->minute=today->minute+minute_range;
next->hour=today->hour;
next->day=today->day;
next->month=today->month;
next->year=today->year;
}
break;
case 2:
if (!(today->year%4)&&(today->year%100)||!(today->year%400))
{
if (today->minute+minute_range>59)
if ((today->hour+(today->minute+minute_range)/60)>23)
if ((today->day+(today->hour+(today->minute+minute_range)/60)/24)>29)
{
next->minute=(today->minute+minute_range)%60;
next->hour=(today->hour+(today->minute+minute_range)/60)%24;
next->day=today->day+(today->hour+(today->minute+minute_range)/60)/24-29;
next->month=today->month+1;
next->year=today->year;
} else
{
next->minute=(today->minute+minute_range)%60;
next->hour=(today->hour+(today->minute+minute_range)/60)%24;
next->day=today->day+1;
next->month=today->month;
next->year=today->year;
}
else
{
next->minute=(today->minute+minute_range)%60;
next->hour=today->hour+1;
next->day=today->day;
next->month=today->month;
next->year=today->year;
}
else
{
next->minute=today->minute+minute_range;
next->hour=today->hour;
next->day=today->day;
next->month=today->month;
next->year=today->year;
}
} else
{
if (today->minute+minute_range>59)
if ((today->hour+(today->minute+minute_range)/60)>23)
if ((today->day+(today->hour+(today->minute+minute_range)/60)/24)>28)
{
next->minute=(today->minute+minute_range)%60;
next->hour=(today->hour+(today->minute+minute_range)/60)%24;
next->day=today->day+(today->hour+(today->minute+minute_range)/60)/24-28;
next->month=today->month+1;
next->year=today->year;
} else
{
next->minute=(today->minute+minute_range)%60;
next->hour=(today->hour+(today->minute+minute_range)/60)%24;
next->day=today->day+1;
next->month=today->month;
next->year=today->year;
}
else
{
next->minute=(today->minute+minute_range)%60;
next->hour=today->hour+1;
next->day=today->day;
next->month=today->month;
next->year=today->year;
}
else
{
next->minute=today->minute+minute_range;
next->hour=today->hour;
next->day=today->day;
next->month=today->month;
next->year=today->year;
}
}
}
} else
{
switch (today->month)
{
case 1: case 2: case 4: case 6:
case 8: case 9: case 11:
if (today->hour+(today->minute+minute_range)/60-1<0)
if ((today->day+(today->hour+((today->minute+minute_range)/60-1))/24-1)<=0)
if (today->month==1)
{
next->minute=60-abs((today->minute+minute_range)%60);
next->hour=24+today->hour-(today->minute+minute_range)/60-1;
next->day=31+(today->day+(today->minute+minute_range)/60-1)/24;
next->month=12;
next->year=today->year-1;
} else
{
next->minute=60-abs((today->minute+minute_range)%60);
next->hour=24+today->hour-(today->minute+minute_range)/60-1;
next->day=31+(today->day+(today->minute+minute_range)/60-1)/24;
next->month=today->month-1;
next->year=today->year;
}
else
{
next->minute=60-abs((today->minute+minute_range)%60);
next->hour=24+today->hour-(today->minute+minute_range)/60-1;
next->day=today->day-1;
next->month=today->month;
next->year=today->year;
}
else
{
next->minute=60-abs((today->minute+minute_range)%60);
next->hour=today->hour-1;
next->day=today->day;
next->month=today->month;
next->year=today->year;
}
break;
case 5: case 7: case 10: case 12:
if (today->hour+(today->minute+minute_range)/60-1<0)
if ((today->day+(today->hour+((today->minute+minute_range)/60-1))/24-1)<=0)
{
next->minute=60-abs((today->minute+minute_range)%60);
next->hour=24+today->hour-(today->minute+minute_range)/60-1;
next->day=30+(today->day+(today->minute+minute_range)/60-1)/24;
next->month=today->month-1;
next->year=today->year;
} else
{
next->minute=60-abs((today->minute+minute_range)%60);
next->hour=24+today->hour-(today->minute+minute_range)/60-1;
next->day=today->day-1;
next->month=today->month;
next->year=today->year;
}
else
{
next->minute=60-abs((today->minute+minute_range)%60);
next->hour=today->hour-1;
next->day=today->day;
next->month=today->month;
next->year=today->year;
}
break;
case 3:
if (!(today->year%4)&&(today->year%100)||!(today->year%400))
{
if (today->hour+(today->minute+minute_range)/60-1<0)
if ((today->day+(today->hour+((today->minute+minute_range)/60-1))/24-1)<=0)
{
next->minute=60-abs((today->minute+minute_range)%60);
next->hour=24+today->hour-(today->minute+minute_range)/60-1;
next->day=29+(today->day+(today->minute+minute_range)/60-1)/24;
next->month=today->month-1;
next->year=today->year;
} else
{
next->minute=60-abs((today->minute+minute_range)%60);
next->hour=24+today->hour-(today->minute+minute_range)/60-1;
next->day=today->day-1;
next->month=today->month;
next->year=today->year;
}
else
{
next->minute=60-abs((today->minute+minute_range)%60);
next->hour=today->hour-1;
next->day=today->day;
next->month=today->month;
next->year=today->year;
}
} else
{
if (today->hour+(today->minute+minute_range)/60-1<0)
if ((today->day+(today->hour+((today->minute+minute_range)/60-1))/24-1)<=0)
{
next->minute=60-abs((today->minute+minute_range)%60);
next->hour=24+today->hour-(today->minute+minute_range)/60-1;
next->day=28+(today->day+(today->minute+minute_range)/60-1)/24;
next->month=today->month-1;
next->year=today->year;
} else
{
next->minute=60-abs((today->minute+minute_range)%60);
next->hour=24+today->hour-(today->minute+minute_range)/60-1;
next->day=today->day-1;
next->month=today->month;
next->year=today->year;
}
else
{
next->minute=60-abs((today->minute+minute_range)%60);
next->hour=today->hour-1;
next->day=today->day;
next->month=today->month;
next->year=today->year;
}
}
}
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -