#include "stdio.h"
/* 年 yr,月 mn, 日(含小时分秒)dy
* 返回当天的修正儒略日(modified Julian date)mjd
* 从1582年10月15开始使用格利高里历(就是阳历)
* (教皇格利高里十三世丢掉了十天--1582年十月5到14,改进了
* 闰年算法--400年97闰).
*/
void cal_mjd(int mn,double dy,int yr,double *mjd)
{
static double last_mjd, last_dy;
static int last_mn,last_yr;
int b,d,m,y;
long c;
if(mn==last_mn&&yr==last_yr&&dy==last_dy)
{
*mjd=last_mjd;
return;
}
m=mn;
y=(yr<0)?yr+1:yr;
if(mn<3)
{
m+=12;
y-=1;
}
if(yr<1582||(yr==1582&&(mn<10||(mn==10&&dy<15)))) b=0;
else
{
int a;
a=y/100;
b=2-a+a/4;
}
if(y<0)
c=(long)((365.25*y)-0.75)-694025L;
else
c=(long)(365.25*y)-694025L;
d=(int)(30.6001*(m+1));
*mjd=b+c+d+dy-0.5;
last_mn=mn;
last_dy=dy;
last_yr=yr;
last_mjd=*mjd;
}
void main()
{
double day,first,second;
int year,month;
printf("Input first date, format yyyy-mm-dd:");
scanf("%d-%d-%lf",&year,&month,&day);
cal_mjd(month,day,year,&first);
printf("Input second date, format yyyy-mm-dd:");
scanf("%d-%d-%lf",&year,&month,&day);
cal_mjd(month,day,year,&second);
printf("there are %0.2lf day.",second-first);
}
晕,那你两个日期直接相减再转INT就行了。
TDateTime d1,d2;
(int)(d1>d2?d1-d2:d2-d1)