+ -
当前位置:首页 → 问答吧 → (yr-1)*365+(yr-1)/4-(yr-1)/1000的意思是什么

(yr-1)*365+(yr-1)/4-(yr-1)/1000的意思是什么

时间:2011-12-02

来源:互联网

void Date::SetDate(int mo,int da,int yr)
{
if(mo < 1 || mo > 12 || yr<1)
{
ndays = 0; //invalid month or year or null date
return;
}


//Compute days thru last year
ndays = (yr-1)*365+(yr-1)/4-(yr-1)/1000;
for(int i = 0;i < mo;i++)
{
int dy = dys[i];
if(i == 1&&IsLeapYear(yr))
dy++;
if(i<mo-1)
ndays += dy;
else if(da > dy)
{
ndays = 0;
return;
}
}
ndays += da; //add in this month's days.
}



看不懂上面的ndays = (yr-1)*365+(yr-1)/4-(yr-1)/1000;这一句,这句是怎么算出以前的天数?为什么要用yr-1)/4-(yr-1)/1000

作者: freefly123   发布时间: 2011-12-02

ndays = (yr-1)*365+(yr-1)/4-(yr-1)/1000;
计算的是从公元0年到公元yr-1年的天数
得考虑润年

作者: ouyh12345   发布时间: 2011-12-02

瑞年吧。

作者: zanfeng   发布时间: 2011-12-02

应该是闰年,不过1000是什么意思?应该是100把?就算是100也不对啊?还要加/400啊

作者: nice_cxf   发布时间: 2011-12-02

该回复于2011-12-02 13:30:03被管理员删除

  • 对我有用[0]
  • 丢个板砖[0]
  • 引用
  • 举报
  • 管理
  • TOP
#5楼 得分:0回复于:2011-12-02 14:30:05
还是用
COleDateTime
COleDateTimeSpan
比较好吧。
The COleDateTime class handles dates from 1 January 100 – 31 December 9999.

作者: ys793914049   发布时间: 2011-12-02