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的。
...+以mm\/dd\/yyyy的格式输入两日期,判断两个日期大小并按升序输出?_百 ...
\/\/ 输入第一个日期 printf("Enter date in mm\/dd\/yyyy format: "); scanf("%d\/%d\/%d", &month1, &day1, &year1);\/\/ 输入第二个日期 printf("Enter another date in mm\/dd\/yyyy format: "); scanf("%d\/%d\/%d", &month2, &day2, &year2);\/\/ 判断两个日期的大小 if (...
C语言的比较两个时间的函数
1、方法一:若时间为结构体变量,比较两个时间的大小,而且不能改变时间的值,可以是:int timecmp(date_t* date1,date_t* date2){ if(date1-> year==date1-> year)return memcmp(date1, date2,sizeof(date_t));else return date1-> year-date2-> year } 2、方法二:long getTime...
用c语言比较当前系统日期与我输入的日期大小怎么写代码?
include #include <stdio.h>void main(void){time_t timep;struct tm *p;int in_time[3];intnow_time[3];int i;printf("输入年-月-日: ");scanf("%d-%d-%d", &in_time[0], &in_time[1], &in_time[2]);time (&timep);p=gmtime(&timep);now_time[0]=1900+p->tm_year;...
C语言计算两个时间差
下面,通过流程图展示计算过程。首先,通过函数`CompareDate()`比较日期,确保第一个日期始终不大于第二个日期。然后,使用`SwapDate()`函数交换日期,以确保计算逻辑的正确性。在计算日期间隔时,使用函数`NumberOfDaysBetween()`。此函数先判断两个日期是否在同一年内。若在同一年内,根据月份是否相同决定...
c语言如何计算两个时间相差多少
time.c 定义一个结构体实现两个时间的加减 \/ include<stdio.h> include<string.h> typedef struct { int seconds;int minutes;int hours;}Time;int checkTime(Time time);void printTime(Time time);void swap(Time *time1,Time *time2);\/\/大的时间放在前面 Time subtract1(Time *first,Time ...
请输入甲乙两个人的生日,判断并输出甲乙谁的年龄大,大多少,c语言
scanf("%d%d%d",&y1,&m1,&d1);printf("请输入乙的出生年月日yyyy m d:");scanf("%d%d%d",&y2,&m2,&d2);printf("请输入当天日期yyyy m d:"); \/\/这是为了计算过了生日,就增加1岁 scanf("%d%d%d",&y,&m,&d);nl1=y-y1-1+(m1<m||m1==m&&d1<=d);nl2=y-y2-1+...
用C语言实现计算两个日期的天数差值
实现C语言计算两个日期天数差值的主要步骤包括:日期判断、年份差值计算、年份天数统计和最终结果计算。具体步骤如下:1. 输入日期:首先获取日期①(year, month, day)和日期②(year1, month1, day1)。日期输入后进行初步检查,确保数据有效性。2. 年份差值计算:比较两个日期年份大小,确定较大年份...
C语言判断两个日期的前后问题
这是编译器的判断逻辑),编译器不会根据你上下文去统计逻辑的,因此会认为你if有返值,没有else语句中的返值。你将两个逻辑中的连续if改成if else应该就没问题了。其实,如果年月日的规则是严格的,那么语句不用这么麻烦,直接判断 year*365+month*30+day 的大小即可判定两个日期的关系了。
【C语言程序设计】日期函数,日期处理函数!
定义结构体 Date 表示日期,包含年、月、日三个整型成员。设计函数计算特定日期是一年中的第几天,考虑是否为闰年决定二月天数。编写函数比较两个日期的大小,按年、月、日顺序比较。创建函数计算两个日期之间的天数,通过比较函数和计算一年中的天数。实现 yearday() 函数计算一年的总天数,monthday() ...
C语言计算两个时间差
C语言通过一系列逻辑判断和计算,实现了比较并计算两个日期之间的天数差。首先,程序会根据日期的大小进行交换,然后根据日期的年份、月份和日期逐层计算间隔天数,考虑了闰年的特殊处理。以下是详细的步骤和代码片段: 结构体定义:c struct date{ int year;int month;int day;};比较和交换日期函数:...