c语言写时间最优函数 c语言实现时间差( 五 )


//计算持续时间的长度
/* Date : 10/24/2007 */
/* Author: Eman Lee */
#include "stdio.h"
#include "stdlib.h"
#include "time.h"
int main(void)
{
time_t start,end;
start = time(NULL);
system("pause");
end = time(NULL);
printf("The pause used %f seconds. ",difftime(end,start));//-
system("pause");
return 0;
}
运行结果为:
请按任意键继续. . .
The pause used 2.000000 seconds.
请按任意键继续. . .
可以想像,暂停的时间并不那么巧是整整2秒钟 。其实,你将上面程序的带有“//-”注释的一行用下面的一行代码替换:
printf("The pause used %f seconds. ",end-start);
其运行结果是一样的 。
9. 分解时间转化为日历时间
这里说的分解时间就是以年、月、日、时、分、秒等分量保存的时间结构,在C/C++中是tm结构 。我们可以使用mktime()函数将用tm结构表示的时间转化为日历时间 。其函数原型如下:
time_t mktime(struct tm * timeptr);
其返回值就是转化后的日历时间 。这样我们就可以先制定一个分解时间,然后对这个时间进行操作了,下面的例子可以计算出1997年7月1日是星期几:
//计算出1997年7月1日是星期几
/* Date : 10/24/2007 */
/* Author: Eman Lee */
#include "stdio.h"
#include "stdlib.h"
#include "time.h"
int main(void)
{
struct tm time;
time_t t_of_day;
time.tm_year=1997-1900;
time.tm_mon=6;
time.tm_mday=1;
time.tm_hour=0;
time.tm_min=0;
time.tm_sec=1;
time.tm_isdst=0;
t_of_day=mktime(time);
printf(ctime(t_of_day));
return 0;
}
运行结果:
Tue Jul 01 00:00:01 1997
有了mktime()函数,是不是我们可以操作现在之前的任何时间呢?你可以通过这种办法算出1945年8月15号是星期几吗?答案是否定的 。因为这个时间在1970年1月1日之前 , 所以在大多数编译器中,这样的程序虽然可以编译通过,但运行时会异常终止 。
注:linux系统时间如果转换为 time_t 类型,都是从1970-01-01 08:00:00 开始计算
c语言时间函数?。?/h2>time_t nowtime;-- 声明变量 nowtime(现在时间) 为 time_t 型
struct tm *timeinfo;--声明变量timeinfo(时间信息)为tm 型 结构 指针 。
time_t,tm都是time.h 头文件里定义 的 类型 。
time( nowtime );-- 调系统函数 time(), 获得 现在时间 (1970年起多少个“滴答” , 世界标准时间)
timeinfo = localtime( nowtime );-- 调系统函数,获得 当地 现在时间 (例如 东8 区,北京时间) 。时间数据是 tm 型 结构 。
int hour;-- 声明变量 hour (小时),整型 。
hour = timeinfo-tm_hour+1 ;-- 结构 timeinfo的成员tm_hour是时间值,+1 得hour(小时) 。
tm_hour-- 数值范围 0-23 。
C语言中存储日期和时间的最好方法是哪一种?方法没有最好c语言写时间最优函数 , 只有适不适合 。
选择合适的变量来存储日期和时间是根据应用场景而定的 。
C语言标准库中提供了以下有关时间的函数:
time()函数可以得到一个从1900年1月1日0点0分0秒到目前的秒数
localtime()函数c语言写时间最优函数,将该整数转换为一个时间结构体struct tm中 。
ctime()和asctime()函数,将时间机器数据转换成相应格式的字符串形式 。
一般,日期和时间都是用于展示,这样,用字符串变量存储是最合适的方法:
char datetime[32];
time_t t;
struct tm *p;
t=time(NULL);
p=localtime(t);
strcpy( datetime, asctime(p) );
当需要计算两个时间点之间的时间差时,用整型变量存储时间更为方便:

推荐阅读