C高手请进,比较两个时间先后的函数
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了C高手请进,比较两个时间先后的函数相关的知识,希望对你有一定的参考价值。
比如2011/09/20 08:12:12和2011/10/12 12:12:12,希望给出具体一点的代码!先感谢了!
注意一下,我的时间格式是2011.10.12 12:12:12,谢谢各位了。。。
1) 如果时间字符串格式固定,可以直接按字符串比较大小的方法比较他们所表示对时间大小。这样比较容易。
2) 也可以根据时间字符串,提取年月日时分秒,再比较。这样可以获取时间的具体信息。对时间进行任意的操作而不限于比较。
下面是示例程序,用了上述两种方法:
*/
#include <stdio.h>
#include <string.h>
#include <time.h>
time_t trans(char timeForamt[],char strTime[])
/*
struct tm
int tm_sec; // seconds after the minute - [0,59]
int tm_min; // minutes after the hour - [0,59]
int tm_hour; // hours since midnight - [0,23]
int tm_mday; // day of the month - [1,31]
int tm_mon; // months since January - [0,11]
int tm_year; // years since 1900
int tm_wday; //days since Sunday - [0,6]
int tm_yday; // days since January 1 - [0,365]
int tm_isdst; // daylight savings time flag
;
*/
struct tm t;
sscanf(strTime,timeForamt,&t.tm_year,&t.tm_mon,&t.tm_mday,&t.tm_hour,&t.tm_min,&t.tm_sec);
t.tm_year -= 1900;
t.tm_mon -= 1;
return mktime(&t);
int main(int argc, char *argv[])
char strT1[]="2011/09/20 08:12:12";
char strT2[]="2011/10/12 12:12:12";
time_t t1,t2;
// 由 strT1 转换成时间(距离: 1970 年 1 月 1 日过去的秒数)
t1 = trans("%d/%d/%d %d:%d:%d",strT1);
// 由 strT2 转换成时间(距离: 1970 年 1 月 1 日过去的秒数)
t2 = trans("%d/%d/%d %d:%d:%d",strT2);
/*
比较两个时间大小
*/
// 以字符串形式比较
if(strcmp(strT1,strT2)<0)
printf("%s 早于 %s\n",strT1,strT2);
else if(strcmp(strT1,strT2)==0)
printf("%s 和 %s 同时\n",strT1,strT2);
else
printf("%s 晚于 %s\n",strT1,strT2);
// 用秒数比较
if(difftime(t1,t2)<0)
printf("%s 早于 %s\n",strT1,strT2);
else if(difftime(t1,t2)==0)
printf("%s 和 %s 同时\n",strT1,strT2);
else
printf("%s 晚于 %s\n",strT1,strT2);
return 0;
参考技术A 为什么你们要把这么简单的题目复杂化呢?????
楼主你只要保证你所有的时间都是按照这个格式的话,就直接用strcmp()
char *a = "2011/11/20 08:12:12";
char *b = "2011/10/12 12:12:12";
int c = strcmp(a,b); 这个函数的原则就是每一个一个字节的比较2011/10就比2011/09大
为什么这么简单的楼上非要又换算时间咯又要干嘛的。???
如果你的时间格式不一定一样的话,就另当别论。追问
对了,你不说我还没注意,我的那个时间格式是2011.10.12 12:12:12,那应该怎么办呢?
追答不是,我的意思是如果你要比较的2个时间他们的格式是一样的就肯定可以用strcmp去做。楼上还真是。。。自己说换算成计算机内部时钟,结果也是用strcmp....
2011.10.12 12:12:12 任意时间格式都行,只要你比较的两个是同一种格式就可以了。
其实很简单的,你可以用下strcmp试一下就晓得了
谁就最新时间
还可以直接用strcmp()
char *a = "2011/11/20 08:12:12";
char *b = "2011/10/12 12:12:12";
int c = strcmp(a,b); 这个函数的原则就是每一个一个字节的比较2011/10和2011/09
自然能得出哪个大
当然你要不嫌麻烦 全部 年减年 月减月 。。。。秒减秒 也行
有问题请追问 满意记得采纳 参考技术C #include <stdio.h>
#include <string.h>
int main(void)
char a[128] = 0, b[128] = 0;
int flag = 0;
printf("Plz input time 1:");
gets(a);
printf("Plz input time 2:");
gets(b);
flag = strncmp(a, b, 20);
if (flag > 0)
printf("time %s 比较早!\n", b);
else if (flag < 0)
printf("time %s 比较早!\n", a);
else
printf("相同的时间!\n");
return 0;
参考技术D 使用DateTime结构
丑陋的代码,自己看吧:
http://msdn.microsoft.com/zh-cn/library/03ybds8y(v=VS.80).aspx
以上是关于C高手请进,比较两个时间先后的函数的主要内容,如果未能解决你的问题,请参考以下文章