C语言判断两个日期大小

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了C语言判断两个日期大小相关的知识,希望对你有一定的参考价值。

long d2l(double x) if (x >= 0) return (long) (x+0.5); return (long) (x-0.5); long getTimeInterval(const char *t1, const char *t2) struct tm tm1, tm2; time_t start, end; double diff; strptime(t1, "%Y%m%d", &tm1); start = mktime(&tm1); strptime(t2, "%Y%m%d", &tm2); end = mktime(&tm2); diff = difftime(start, end); return d2l(diff); 以上两个函数用于判断两个yyyymmdd格式的日期的大小,但发现使用getTimeInterval()时获得的结果: t1=[20101221],t2=[20110326],getTimeInterval=[-8208000] t1=[20101221],t2=[20990326],getTimeInterval=[1292860801] t1=[20101221],t2=[20090326],getTimeInterval=[54864000] 结果没有规律?请问上述算法有何不对?谢谢! 您是指: if (x >= 0) return (long) (x+0.5); return (long) (x-0.5); 这个可以不写吧 似乎用strcmp("20101221", "20090326")或strcmp("20101221 09:00", "20101221 09:15")这样也能比较出两个时间的大小?这是为什么呢? memset是不能初始化tm1和tm2的。

参考技术A 程序没有问题,可以正确输出较大的数(特别注意一点:由于你的scanf()中的格式控制符是用逗号分隔的,所以在输入数字时也要用逗号分隔),至于你说的“稳定显示出来...执行完毕后按任意键继续”这个问题只需要包含头文件stdlib.h之后在main()结尾,return
0;之前加上system("pause");即可,原程序按此做如下修改:
//---------------------------------------------------------------------------
#include
#include
int
main(void)

int
x,y,max;
printf("please
input
x,y=");
scanf("%d,%d",&x,&y);
if(x>y)
max=x;
else
max=y;
printf("the
max
is=%d\n",max);
system("pause");
return
0;

//---------------------------------------------------------------------------
参考技术B 应该是你没对tm1和tm2出示化,导致里面的数据是随即的,所以得到的结果不正确吧,我的运行每次都是-8208000(当然是memset过tm1和tm2的)
只要是在内存中的数据都是可以初始化的.
memset(&tm1,
0,sizeof(struct
tm));

以上是关于C语言判断两个日期大小的主要内容,如果未能解决你的问题,请参考以下文章

C语言中比较字符串大小的判断标准是啥?

C语言,使用结构体读入两个在同一年的日期,判断日期是否合法,并计算两个日期之间相差的天数。结构体定义如下:

C语言中比较字符串大小的判断标准是啥?

[C语言]从键盘上输入两个整数num1和num2,判断两数之和与两数乘积的大小关系?

两个值比较大小,c语言运行时如何输入两个数字

c语言中如何判断两个字符串相等