日期计算

View Code
 1 //日期处理
2
3 //每个月的天数
4 int days[12]={31,28,31,30,31,30,31,31,30,31,30,31};
5
6 char* week[7]={"Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"};
7
8 typedef struct Date
9 {
10 int year;
11 int month;
12 int day;
13 }Date;
14
15 //判断是否为闰年
16 //能被4整除却不能被100整除,或者能被400整除
17 bool isLeap(int year)
18 {
19 return ((year%4==0&&year%100)||(year%400==0));
20 }
21
22
23 //判断日期是否合法
24 bool isLegal(Date d)
25 {
26 if(d.month<0||d.month>12)
27 return false;
28 if(d.month==2)
29 {
30 if(isLeap(d.year))
31 return (d.day>0 && d.day<=29);
32 else
33 return (d.day>0 && d.day<=28);
34 }
35 else
36 {
37 return (d.day>0 && d.day<=days[d.mouth-1]);
38 }
39 }
40
41
42
43
44 //返回特定日期是星期几
45 int weekday(Date d)
46 {
47 int days=0;
48 for(int i=0;i<d.month-1;++i)
49 {
50 days+=days[i];
51 }
52 if(d.month>2&&isLeap(d.year))
53 days++;
54 days+=d.day;
55 return ((d.year-1)+(int)((d.year-1)/4)-(int)((d.year-1)/100)+(int)((d.year-1)/400)+days)%7;
56 }

 

 

posted @ 2012-03-31 10:29  Cavia  阅读(273)  评论(0编辑  收藏  举报