64,646
社区成员
发帖
与我相关
我的任务
分享
int nd, nm, ny; //new_day, new_month, new_year
int od, om, oy; //old_day, oldmonth, old_year
nm = (date2.month + 9) % 12;
ny = date2.year - nm/10;
nd = 365*ny + ny/4 - ny/100 + ny/400 + (nm*306 + 5)/10 + (date2.day - 1);
om = (this->month + 9) % 12;
oy = this->year - om/10;
od = 365*oy + oy/4 - oy/100 + oy/400 + (om*306 + 5)/10 + (this->day - 1);
return od - nd;
306 400 4 5 9 这些都是 魔法数,没法看
//以上为0-2011年(不含2011)的天数
//306=365-31(一月)-28(二月);5=全年中不是31的月份的个数
nd = 365*ny + ny/4 - ny/100 + ny/400 + (nm*306 + 5)/10 + (date2.day - 1);
//365*ny按照非瑞年去计算天数(365*2011=734015)
//瑞年的计算公式,从元年到2011有多少瑞年?(ny/4 - ny/100 + ny/400 =487),所以加上
比如2012.2.7
nm = (date2.month + 9) % 12;//是否为瑞年的区别在二月,改值用来判断是否过完二月(nm=11)
ny = date2.year - nm/10;//若月份大于二,今年是不是瑞年也要去计算,否则不用(ny=2011)