Chinaunix首页 | 论坛 | 博客
  • 博客访问: 5202982
  • 博文数量: 553
  • 博客积分: 13864
  • 博客等级: 上将
  • 技术积分: 11041
  • 用 户 组: 普通用户
  • 注册时间: 2011-11-28 21:25
个人简介

个人Blog: hhktony.com

文章分类

全部博文(553)

文章存档

2015年(1)

2014年(2)

2013年(12)

2012年(384)

2011年(154)

分类: LINUX

2011-11-30 10:42:17

time ctime gmtime localtime asctime mktime

时间通过预定义的两种结构来存储:
1,日历时间(Calendar Time)是通过 time_t 数据类型来表示的,用time_t表示的时间(日历时间)是从一个时间点(例如:1970年1月1日0时0分0秒)到此时的秒数。在time.h中,我们也可以看到time_t是一个长整型数:
#ifndef _TIME_T_DEFINED
typedef long time_t; /* 时间值 */
#define _TIME_T_DEFINED /* 避免重复定义 time_t */
#endif

2,在标准C/C++中,我们可通过tm结构来获得日期和时间,tm结构在time.h中的定义如下:

点击(此处)折叠或打开

  1. struct tm {
  2.     int tm_sec;            //代表目前秒数,正常范围为0-59,但允许至61秒
  3.     int tm_min;            //代表目前分数,范围0-59
  4.     int tm_hour;        //从午夜算起的时数,范围为0-23
  5.     int tm_mday;        //目前月份的日数,范围01-31
  6.     int tm_mon;            //代表目前月份,从一月算起,范围从0-11
  7.     int tm_year;        //从1900 年算起至今的年数
  8.     int tm_wday;        //一星期的日数,从星期一算起,范围为0-6
  9.     int tm_yday;        //从今年1月1日算起至今的天数,范围为0-365
  10.     int tm_isdst;        //日光节约时间的旗标
  11. };

2009-9-20表示为tm结构体时,tm_year = 109,tm_mon = 8,tm_mday = 20,在直接使用tm成员值的时候需要注意。


time_t time( time_t *time);
函数说明: 函数返回当前时间,如果发生错误返回零。如果给定参数time ,那么当前时间存储到参数time中。
当前时间是从1970年 1月1日零时开始的秒数.

char *ctime(const time_t *timep);
函数说明 ctime()将参数timep所指的time_t结构中的信息转换成真实世界所使用的时间日期表示方法,然后将结果以字符串形态返回。此函数已经由时区转换成当地时间,字符串格式为“Thu Jan 7 23:19:29 2010\n”。若再调用相关的时间日期函数,此字符串可能会被破坏。

点击(此处)折叠或打开

  1. #include <time.h>
  2. #include <stdio.h>

  3. int main(int argc, char *argv[])
  4. {
  5.     time_t t;
  6.     t = time(NULL);
  7.     /*time(&t);*/

  8.     printf("%s \n", ctime(&t));
  9.     return 0;
  10. }

执行 Thu Jan 7 23:19:29 2010

struct tm*gmtime(const time_t*timep);
函数说明 gmtime()将参数timep 所指的time_t 结构中的信息转换成真实世界所使用的时间日期表示方法,然后将结果由结构tm返回。此函数返回的时间日期未经时区转换,而是UTC时间。

struct tm *localtime(const time_t * timep);
函数说明 localtime()将参数timep所指的time_t结构中的信息转换成真实世界所使用的时间日期表示方法,然后将结果由结构tm返回。此函数返回的时间日期已经转换成当地时区。

char * asctime(const struct tm * timeptr);
函数说明 asctime()将参数timeptr所指的tm结构中的信息转换成真实世界所使用的时间日期表示方法,然后将结果以字符串形态返回。此函数已经由时区转换成当地时间,字符串格式为:“Thu Jan 7 23:39:05 2010\n”。若再调用相关的时间日期函数,此字符串可能会被破坏。与函数ctime的区别是传入的参数不同。

点击(此处)折叠或打开

  1. #include <time.h>
  2. #include <stdio.h>

  3. int main(int argc, char *argv[])
  4. {
  5.     time_t t;
  6. //t = time(NULL);
  7.     time(&t);

  8.     printf("%s \n", asctime(localtime(&t)));
  9. //printf("%s \n",asctime(gmtime(&t)));
  10.     return 0;
  11. }
执行 Thu Jan 7 23:39:05 2010


time_t mktime(strcut tm * timeptr);
函数说明 mktime()用来将参数timeptr所指的tm结构数据转换成从公元1970年1月1日0时0分0 秒算起至今的UTC时间所经过的秒数。与 gmtime 功能相反。

点击(此处)折叠或打开

  1. #include <time.h>
  2. #include <stdio.h>

  3. int main(int argc, char *argv[])
  4. {
  5.     time_t t;
  6.     struct tm *tmptr;

  7.     t = time(NULL);
  8. //time(&t);
  9.     printf("%ld \n", t);

  10.     tmptr = localtime(&t);

  11.     printf("%ld \n", mktime(tmptr));
  12.     return 0;
  13. }
执行
1262880019
1262880019
阅读(1526) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~