linux ctime函数会不会造成linux 内存泄漏漏

linux中时间函数 - 阳台 - 博客园
随笔 - 484, 文章 - 0, 评论 - 22, 引用 - 0
linux下常用时间类型有四种: time_t 、  struct & tm、  struct& timeval 、 && struct & timespec
1、time_t&& 时间函数
  time_t& 类型在time.h中定义:
    #ifndef & __TIME__T
    #define& __TIME_T
    typedef && long& time_t
    #endif
可见, time_t 实际上是一个长整型,其值表示从日00时00分00秒(linux系统的Epoch时间)到当前时刻的秒数,由于time_t类型长度限制;
(long型),它所表示的时间不能晚于日03时14分07秒(UTC),(64位机器不存在此问题,想想why)
使用time()函数获取当前时间的time_t值,使用ctime()函数将time_t& 转为当地时间字符串(返回值是字符串);
备注:时间有时也称为时间,其实和两者几乎是同一概念。它们都是指格林尼治标准时间,只不过的称呼更为正式一点。两者区别在于前者是天文上的概念,而后者是基于一个原子钟。
1.2 struct& tm 时间类型
struct& tm结构在time.h& 中定义:
1 #ifndef __TM_DEFINED
2 struct tm{
int tm_ //秒
int tm_ //分
int tm_ //时
int tm_ //日
int tm_ //年份
int tm_ //星期
/*从每年的1月1日开始的天数-取值区间为[0, 365],0代表1月1日*/
int tm_ /*夏令时标识符,使用夏令时,tm_isdst为正,不使用夏令时,tm_isdst为0,不了解情况时&,tm_isdst为负*/
13 #define __TM_DEFINED  #endif
ANSI C标准称使用tm结构的这种时间表示为分解时间(broken-down time)
gmtime()& / localtime()&& 将time_t 时间类型转换为tm结构体;
mktime()将tm结构体转换为time_t时间类型;
asctime()将struct tm转换为字符串形式;
1.3& struct& timeval时间类型
struct& timeval结构体在time.h中的定义:
1 struct timeval{
time_t tv_
suseconds_t tv_
//微秒(10^-6)s
//毫秒(10^-3)s
设置时间函数与获取时间函数均使用该事件类型作为传参。
1.4& struct & timespec 时间类型
struct&& timespec 结构体time.h定义:
//纳秒(10^-9)s
2、Linux下常用时间函数
Linux下常用时间函数有:、、、、、、、、
2.1&time(&)函数
函数定义:
功能描述:该函数返回从年月日时分秒至今所经过的秒数。如果非空指针,函数也会将返回值存到指针指向的内存。
返回值:成功则返回秒数,失败则返回值,错误原因存于中。
2.2&ctime(&)函数
函数定义:
功能描述:将参数指向的时间信息转换成实际所使用的时间日期表示方法,并以字符串形式返回。字符串格式为:。
2.3&gmtime(&)函数
函数定义:
功能描述:将参数指向的时间信息转换成以结构体表示的时间信息,并以指针返回。
GMT:GMT是中央时区在东区相差个小时,所以北京时间时间小时。
2.4&localtime(&)函数
函数定义:
功能描述:将参数指向的时间信息转换成以结构体表示的本地时区时间如北京时间小时。
2.5&mktime(&)函数
函数定义:
功能描述:将参数指向的结构体数据转换成从年月日时分秒至今的时间经过的秒数。
2.6&asctime(&)函数
函数定义:
功能描述:将参数指向的结构体数据转换成实际使用的时间日期表示方法,并以字符串形式返回与函数相同。字符串格式为:。
2.7&difftime(&)函数
函数定义:
功能描述:比较参数和时间是否相同,并返回之间相差秒数。
2.8&gettimeofday(&)函数
&&&&&&&&#include&&unistd.h&
函数定义:
功能描述:把目前的时间信息存入指向的结构体,当地时区信息则放到指向的结构体。
struct&timezone原型:
使用函数族获取时间并输出指定格式字符串例子(函数):
2.9&settimeofday(&)函数
&&&&&&&&#include&&unistd.h&
函数定义:
功能描述:把当前时间设成由指向的结构体数据。当前地区信息则设成指向的结构体数据。
举例:获取当天零点的时间:
1 #include &time.h&
2 #include &stdio.h&
4 int main()
static time_t time_0 = 0;
time(&nowtime);
printf("%d\n",nowtime);
struct tm mytm = *localtime(&nowtime);
mytm.tm_hour = 0 ;
mytm.tm_min
mytm.tm_sec
time_0 = mktime(&mytm);
printf("%d\n", time_0);Linux获取时间函数及计算时间差_Linux编程_Linux公社-Linux系统门户网站
你好,游客
Linux获取时间函数及计算时间差
来源:Linux社区&
作者:sunny04
第一章& 获取时间函数
1. char * asctime(const struct tm * timeptr);&
函数说明&asctime()将参数timeptr所指的tm结构中的信息转换成真实世界所使用的时间日期表示方法,然后将结果以字符串形态返回。此函数已经由时区转换成当地时间,字符串格式为:&Wed Jun 30 21:49:08 1993\n&&返回值&若再调用相关的时间日期函数,此字符串可能会被破坏。此函数与ctime不同处在于传入的参数是不同的结构。&附加说明&返回一字符串表示目前当地的时间日期。&范例&#include &time.h&main(){time_time (&timep);printf(&%s&,asctime(gmtime(&timep)));}&执行&Sat Oct 28 02:10:06 2000
Linux函数库操作相关&
2. 定义函数&char *ctime(const time_t *timep);&函数说明&ctime()将参数timep所指的time_t结构中的信息转换成真实世界所使用的时间日期表示方法,然后将结果以字符串形态返回。此函数已经由时区转换成当地时间,字符串格式为&Wed Jun 30 21 :49 :08 1993\n&。若再调用相关的时间日期函数,此字符串可能会被破坏。&返回值&返回一字符串表示目前当地的时间日期。&范例&#include&time.h&main(){time_time (&timep);printf(&%s&,ctime(&timep));}&执行&Sat Oct 28 10 : 12 : 05 2000
3. struct tm*gmtime(const time_t*timep);&函数说明&gmtime()将参数timep 所指的time_t 结构中的信息转换成真实世界所使用的时间日期表示方法,然后将结果由结构tm返回。结构tm的定义为struct tm{int tm_int tm_int tm_int tm_int tm_int tm_int tm_int tm_int tm_};int tm_sec 代表目前秒数,正常范围为0-59,但允许至61秒int tm_min 代表目前分数,范围0-59int tm_hour 从午夜算起的时数,范围为0-23int tm_mday 目前月份的日数,范围01-31int tm_mon 代表目前月份,从一月算起,范围从0-11int tm_year 从1900 年算起至今的年数int tm_wday 一星期的日数,从星期一算起,范围为0-6int tm_yday 从今年1月1日算起至今的天数,范围为0-365int tm_isdst 日光节约时间的旗标此函数返回的时间日期未经时区转换,而是UTC时间。&返回值&返回结构tm代表目前UTC 时间&范例&#include &time.h&main(){char *wday[]={"Sun","Mon","Tue","Wed","Thu","Fri","Sat"};time_struct tm *p;time(&timep);p=gmtime(&timep);printf(&%d%d%d&,(1900+p-&tm_year), (1+p-&tm_mon),p-&tm_mday);printf(&%s%d;%d;%d\n&, wday[p-&tm_wday], p-&tm_hour, p-&tm_min, p-&tm_sec);}&执行& Sat 8:15:38
4.& struct tm *localtime(const time_t * timep);&函数说明&localtime()将参数timep所指的time_t结构中的信息转换成真实世界所使用的时间日期表示方法,然后将结果由结构tm返回。结构tm的定义请参考gmtime()。此函数返回的时间日期已经转换成当地时区。&返回值&返回结构tm代表目前的当地时间。&范例&#include&time.h&main(){char *wday[]={&Sun&,&Mon&,&Tue&,&Wed&,&Thu&,&Fri&,&Sat&};time_struct tm *p;time(&timep);p=localtime(&timep); /*取得当地时间*/printf (&%d%d%d &, (1900+p-&tm_year),( l+p-&tm_mon), p-&tm_mday);printf(&%s%d:%d:%d\n&, wday[p-&tm_wday],p-&tm_hour, p-&tm_min, p-&tm_sec);}&执行& Sat 11:12:22
5. time_t mktime(strcut tm * timeptr);&函数说明&mktime()用来将参数timeptr所指的tm结构数据转换成从公元日0时0分0 秒算起至今的UTC时间所经过的秒数。&返回值&返回经过的秒数。&范例&/* 用time()取得时间(秒数),利用localtime()转换成struct tm 再利用mktine()将struct tm转换成原来的秒数*/#include&time.h&main(){time_strcut tm *p;time(&timep);printf(&time() : %d \n&,timep);p=localtime(&timep);timep = mktime(p);printf(&time()-&localtime()-&mktime():%d\n&,timep);}&执行&time():time()-&localtime()-&mktime():
6.& time_t time(time_t *t);&函数说明&此函数会返回从公元日的UTC时间从0时0分0秒算起到现在所经过的秒数。如果t 并非空指针的话,此函数也会将返回值存到t指针所指的内存。&返回值&成功则返回秒数,失败则返回((time_t)-1)值,错误原因存于errno中。&范例&#include&time.h&mian(){int seconds= time((time_t*)NULL);printf(&%d\n&,seconds);}&
7. gettimeofday() :可获得微妙级(0.000001秒)的系统时间,调用两次gettimeofday(),前后做减法,从而达到定时或者计算时间的目的。
& & & char *asctime(const struct tm *tm);&
& & & char *asctime_r(const struct tm *tm, char *buf);
& & & char *ctime(const time_t *timep);
& & & char *ctime_r(const time_t *timep, char *buf);
& & & struct tm *gmtime(const time_t *timep); //获取的为英国时间
& & & struct tm *gmtime_r(const time_t *timep, struct tm *result);
& & & struct tm *localtime(const time_t *timep);& & & //获取的为本地时间,注意与英国时间的区别。
& & & struct tm *localtime_r(const time_t *timep, struct tm *result);
& & & time_t mktime(struct tm *tm);
& & & double difftime(time_t time1, time_t time0);
& & & int gettimeofday(struct timeval *tv, struct timezone *tz);
& & & int settimeofday(const struct timeval *tv , const struct timezone *tz);
更多详情见请继续阅读下一页的精彩内容: &
相关资讯 & & &
& (08/20/:30)
   同意评论声明
   发表
尊重网上道德,遵守中华人民共和国的各项有关法律法规
承担一切因您的行为而直接或间接导致的民事或刑事法律责任
本站管理人员有权保留或删除其管辖留言中的???意内容
本站有权在网站内转载或引用您的评论
参与本评论即表明您已经阅读并接受上述条款2007年9月 C/C++大版内专家分月排行榜第三2007年8月 C/C++大版内专家分月排行榜第三2006年11月 C/C++大版内专家分月排行榜第三
2014年10月 C/C++大版内专家分月排行榜第三2014年4月 C/C++大版内专家分月排行榜第三
2013年 总版技术专家分年内排行榜第三
2012年 总版技术专家分年内排行榜第七
本帖子已过去太久远了,不再提供回复功能。ctime()函数
 若在linux下使用ctime()函数,需要include
&time.h&头文件
函数: ctime()
  功 能: 把和时间转换为字符串
  用 法: char *ctime(const time_t *time);
  程序例:
  #include &cstdio&
  #include &ctime&
  int main(void)
  time(&t);
  printf("Today's date and time: %s\n", ctime(&t));
  return 0;
已投稿到:
以上网友发言只代表其个人观点,不代表新浪网的观点或立场。博客访问: 1582641
博文数量: 383
博客积分: 4817
博客等级: 上校
技术积分: 4338
注册时间:
IT168企业级官微
微信号:IT168qiye
系统架构师大会
微信号:SACC2013
分类: LINUX
gettimeofday
settimeofday
asctime(将时间和日期以字符串格式表示)
time,ctime,gmtime,localtime
#include&time.h&
char * asctime(const struct tm * timeptr);
asctime()将参数timeptr所指的tm结构中的信息转换成真实世界所使用的时间日期表示方法,然后将结果以字符串形态返回。此函数已经由时区转换成当地时间,字符串格式为:“Wed Jun 30 21:49:08 1993/n”
若再调用相关的时间日期函数,此字符串可能会被破坏。此函数与ctime不同处在于传入的参数是不同的结构。
返回一字符串表示目前当地的时间日期。
#include &time.h&
time (&timep);
printf(“%s”,asctime(gmtime(&timep)));
Sat Oct 28 02:10:06 2000
ctime(将时间和日期以字符串格式表示)
time,asctime,gmtime,localtime
#include&time.h&
char *ctime(const time_t *timep);
将参数timep所指的time_t结构中的信息转换成真实世界所使用的时间日期表示方法,然后将结果以字符串形态返回。此函数已经由时区转换成当地时
间,字符串格式为“Wed Jun 30 21 :49 :08 1993/n”。若再调用相关的时间日期函数,此字符串可能会被破坏。
返回一字符串表示目前当地的时间日期。
#include&time.h&
time (&timep);
printf(“%s”,ctime(&timep));
Sat Oct 28 10 : 12 : 05 2000
gettimeofday(取得目前的时间)
time,ctime,ftime,settimeofday
#include &sys/time.h&
#include &unistd.h&
int gettimeofday ( struct timeval * tv , struct timezone * tz )
gettimeofday()会把目前的时间有tv所指的结构返回,当地时区的信息则放到tz所指的结构中。
timeval结构定义为:
struct timeval{
long tv_ /*秒*/
long tv_ /*微秒*/
timezone 结构定义为:
struct timezone{
int tz_ /*和Greenwich 时间差了多少分钟*/
int tz_ /*日光节约时间的状态*/
上述两个结构都定义在/usr/include/sys/time.h。tz_dsttime 所代表的状态如下
DST_NONE /*不使用*/
DST_USA /*美国*/
DST_AUST /*澳洲*/
DST_WET /*西欧*/
DST_MET /*中欧*/
DST_EET /*东欧*/
DST_CAN /*加拿大*/
DST_GB /*大不列颠*/
DST_RUM /*罗马尼亚*/
DST_TUR /*土耳其*/
DST_AUSTALT /*澳洲(1986年以后)*/
成功则返回0,失败返回-1,错误代码存于errno。附加说明EFAULT指针tv和tz所指的内存空间超出存取权限。
#include&sys/time.h&
#include&unistd.h&
gettimeofday (&tv , &tz);
printf(“tv_ %d/n”, tv,.tv_sec) ;
printf(“tv_ %d/n”,tv.tv_usec);
printf(“tz_ %d/n”, tz.tz_minuteswest);
printf(“tz_dsttime, %d/n”,tz.tz_dsttime);
tv_usec:136996
tz_minuteswest:-540
tz_dsttime:0
gmtime(取得目前时间和日期)
time,asctime,ctime,localtime
#include&time.h&
struct tm*gmtime(const time_t*timep);
gmtime()将参数timep 所指的time_t 结构中的信息转换成真实世界所使用的时间日期表示方法,然后将结果由结构tm返回。
结构tm的定义为
int tm_sec 代表目前秒数,正常范围为0-59,但允许至61秒
int tm_min 代表目前分数,范围0-59
int tm_hour 从午夜算起的时数,范围为0-23
int tm_mday 目前月份的日数,范围01-31
int tm_mon 代表目前月份,从一月算起,范围从0-11
int tm_year 从1900 年算起至今的年数
int tm_wday 一星期的日数,从星期一算起,范围为0-6
int tm_yday 从今年1月1日算起至今的天数,范围为0-365
int tm_isdst 日光节约时间的旗标
此函数返回的时间日期未经时区转换,而是UTC时间。
返回结构tm代表目前UTC 时间
#include &time.h&
char *wday[]={"Sun","Mon","Tue","Wed","Thu","Fri","Sat"};
struct tm *p;
time(&timep);
p=gmtime(&timep);
printf(“%d%d%d”,(1900+p-&tm_year), (1+p-&tm_mon),p-&tm_mday);
printf(“%s%d;%d;%d/n”, wday[p-&tm_wday], p-&tm_hour, p-&tm_min, p-&tm_sec);
Sat 8:15:38
localtime(取得当地目前时间和日期)
time, asctime, ctime, gmtime
#include&time.h&
struct tm *localtime(const time_t * timep);
localtime()将参数timep所指的time_t结构中的信息转换成真实世界所使用的时间日期表示方法,然后将结果由结构tm返回。结构tm的定义请参考gmtime()。此函数返回的时间日期已经转换成当地时区。
返回结构tm代表目前的当地时间。
#include&time.h&
char *wday[]={“Sun”,”Mon”,”Tue”,”Wed”,”Thu”,”Fri”,”Sat”};
struct tm *p;
time(&timep);
p=localtime(&timep); /*取得当地时间*/
printf (“%d%d%d ”, (1900+p-&tm_year),( l+p-&tm_mon), p-&tm_mday);
printf(“%s%d:%d:%d/n”, wday[p-&tm_wday],p-&tm_hour, p-&tm_min, p-&tm_sec);
Sat 11:12:22
mktime(将时间结构数据转换成经过的秒数)
time,asctime,gmtime,localtime
#include&time.h&
time_t mktime(strcut tm * timeptr);
mktime()用来将参数timeptr所指的tm结构数据转换成从公元日0时0分0 秒算起至今的UTC时间所经过的秒数。
返回经过的秒数。
/* 用time()取得时间(秒数),利用localtime()
转换成struct tm 再利用mktine()将struct tm转换成原来的秒数*/
#include&time.h&
strcut tm *p;
time(&timep);
printf(“time() : %d /n”,timep);
p=localtime(&timep);
timep = mktime(p);
printf(“time()-&localtime()-&mktime():%d/n”,timep);
time()-&localtime()-&mktime():
settimeofday(设置目前时间)
time,ctime,ftime,gettimeofday
#include&sys/time.h&
#include&unistd.h&
int settimeofday ( const struct timeval *tv,const struct timezone *tz);
settimeofday()会把目前时间设成由tv所指的结构信息,当地时区信息则设成tz所指的结构。详细的说明请参考gettimeofday()。注意,只有root权限才能使用此函数修改时间。
成功则返回0,失败返回-1,错误代码存于errno。
EPERM 并非由root权限调用settimeofday(),权限不够。
EINVAL 时区或某个数据是不正确的,无法正确设置时间。
time(取得目前的时间)
ctime,ftime,gettimeofday
#include&time.h&
time_t time(time_t *t);
此函数会返回从公元日的UTC时间从0时0分0秒算起到现在所经过的秒数。如果t 并非空指针的话,此函数也会将返回值存到t指针所指的内存。
成功则返回秒数,失败则返回((time_t)-1)值,错误原因存于errno中。
#include&time.h&
int seconds= time((time_t*)NULL);
printf(“%d/n”,seconds);
阅读(3717) | 评论(0) | 转发(1) |
相关热门文章
给主人留下些什么吧!~~
请登录后评论。

我要回帖

更多关于 linux内存泄漏定位 的文章

 

随机推荐