如何用c语言来计算日期间隔天数?
楼上的说的太麻烦了(真是傻瓜做法)//定义两个时间DateTime time1=Convert.ToDateTime(“2006-05-23”);DateTime time2=Convert.ToDateTime(“2045-12-15”);//计算间隔天数(精确到毫秒格式为“2222.22.22.2222”)TimeSpan span = (TimeSpan)(time2-time1);int result = Convert.ToInt32(Convert.ToString(span).SubString(0,Convert.ToString(span).IndexOf(“.”)));//result就是你要的天数
C语言求两个日期相差的天数
计算两个年月日之间的天数,思路是分别算出日期的总天数然后相减。
要考虑闰年的情况,判断闰年的口诀:4年一闰,100年不闰,400年再闰。
((year % 4 == 0 year % 100 != 0) || year % 400 == 0)
网上找了一个(偷懒= =!),修改下如下:
#include stdio.h
int sum(int y,int m,int d)
{
unsigned char x[13]={0,31,28,31,30,31,30,31,31,30,31,30,31};
int i,s=0;
for(i=1;iy;i++)
if(i%4==0 i%100!=0 || i%400==0)
s+=366;//闰年
else
s+=365;//平年
if(y%4==0 y%100!=0 || y%400==0)
x[2]=29;
for(i=1;im;i++)
s+=x[i];//整月的天数
s+=d;//日的天数
return s;//返回总天数,相对公元1年
}
void main()
{
unsigned char y1,m1,d1,y2,m2,d2;
int s1,s2;
printf(“输入第一个年 月 日:”);
scanf(“%d %d %d”,y1,m1,d1);
printf(“输入第二个年 月 日:”);
scanf(“%d %d %d”,y2,m2,d2);
s1=sum(y1,m1,d1);
s2=sum(y2,m2,d2);
if (s1 s2)
printf(“相差天数:%ld\n”,s1-s2);
else
printf(“相差天数:%ld\n”,s2-s1);
}
以上代码VC6编译测试通过。
虽然这个思路显得有些笨,但是其它算法,代码太长太复杂,要考虑多种情况,不如直接算两个日期距离公元元年1月1日的天数,然后相减
给定年月日 怎样用C语言编程计算2个日期之间的时间天数
1970 年以后的时间,可以用 time.h 里的函数计算。时间精度为秒。按题目要求,输出时间单位用天。程序如下:
#include stdio.h
#include time.h
time_t YMD_hhmmss_2_s70(int Y, int M, int D, int hh, int mm, int ss){
struct tm *target_tm;
time_t tt;
time (tt);
target_tm=localtime(tt);
target_tm-tm_year = Y – 1900;
target_tm-tm_mon= M – 1;
target_tm-tm_mday = D;
target_tm-tm_hour = hh; // hour
target_tm-tm_min = mm;
target_tm-tm_sec = ss;
tt = mktime(target_tm); // from tm to time_t (s)
return tt;
}
int main()
{
int y1,m1,d1,y2,m2,d2;
time_t t1,t2;
int dt;
printf(“input y1 m1 d1: “);
scanf(“%d %d %d”,y1,m1,d1);
printf(“\ninput y2 m2 d2: “);
scanf(“%d %d %d”,y2,m2,d2);
t1 = YMD_hhmmss_2_s70(y1,m1,d1,0,0,0);
t2 = YMD_hhmmss_2_s70(y2,m2,d2,0,0,0);
dt = (t2-t1)/(24*3600);
printf(“\ndt=%d\n”,dt);
return 0;
}
这里未包含日期的合法性判断。
1970 年以前 要另写程序。某年的日子是当年的第几天可用下面函数得出:
int YMD_2_JD(int Y, int M, int D){
const short MonthDay[]={0,31,28,31,30,31,30,31,31,30,31,30,31};
int JD,i;
JD=D;
for (i=0;iM;i++) JD+=MonthDay[i];
if (((Y%4==0)(Y%100!=0)||(Y%400==0)) (M2)) JD++;
return JD;
}
整年的天数,涉及闰年的判断:
某年是否闰年,用 (Y%4==0)(Y%100!=0)||(Y%400==0) 判断。闰年366天,平年365天。 有了这些,写程序不难。
未考虑公元前的年月日计算。
用c语言编写计算两个日期之间的天数
#include time.h
#include stdio.h
void main()
{
tm t1={0},t2={0};
t1.tm_year = 1999-1900;
t1.tm_mon = 2-1;
t1.tm_mday = 3;
t2.tm_year = 2015-1900;
t2.tm_mon = 5-1;
t2.tm_mday = 4;
time_t a1 = mktime(t1);
time_t a2 = mktime(t2);
printf(“相差%d天”, (a2-a1)/86400);
}
ps:看不懂了再追问