c语言中的time ctime asctime gmtime localtime mktime

synopsis:  
 #inlcude<time.h>
 time_t time(time_t *time);
 char *ctime(const time_t *time);
 char *asctime(const struct tm *tm);
 struct tm *gmtime(const time_t *time);
 struct tm *localtime(const time_t *time);
 time_t mktime(struct tm *tm);


 description:
 time:
 time 返回的是 日历时间(calender time),即从1970/1/1 00:00:00 到当前的秒数。
 如果 参数time为NULL或者0,则结果保存在time的返回值中,否则,结果保存在time中
 
 ctime:
 ctime 参数是time返回的日历时间,返回字符串,比如:“Mon Jun 30 20:57:32 2014\n”。(broken-down time)


 asctime:
 asctime 返回同ctime一样的字符窜,只是参数是结构体struct tm *tm 


 gmtime:
 gmtime参数是time返回的日历时间,返回结构体指针,此指针所指结构体表示的时间是 UTC时间,即协调世界时间,比GMT更精确
 返回的结构体定义为:
 struct tm {
      int     tm_sec;         /* seconds */  范围是:    0-59


      int     tm_min;         /* minutes */              0-59


      int     tm_hour;        /* hours */ 0-23


      int     tm_mday;        /* day of the month */     1-31


      int     tm_mon;         /* month */    特别注意:  0-11


      int     tm_year;        /* year */     从1900年开始到当前的年数


      int     tm_wday;        /* day of the week */      0-6 0表示星期天,以此到星期六


      int     tm_yday;        /* day in the year */      从1月1日开始  0-365


      int     tm_isdst;       /* daylight saving time */  夏令时制,即是“日光节约时制”一般在天亮早的夏季人为将时间提前一小时,
                                                          可以使人早起早睡,减少照明量,以充分利用光照资源,从而节约照明用电。
 其实从英文表达就可以看出它的意义。其值为0或正数,正数表示 该时制生效
 0表示不生效。
 };
 特别的:tm_year 为从1900年开始到当前所经过的 年数,如当前为2014年,则tm_year为2014-1900=114年
tm_mon 的范围为0-11
 想得到本地时间时,对于 重庆 来说,因为其处于东8区,所以比UTC提前8个小时,所以tm_hour+8才是重庆的正确小时数。


 localtime:
 localtime的参数是time返回的日历时间,返回结构体指针,此指针所指结构体表示的时间是 本地时间,与gmtime不同。
 这表示,tm_hour直接就表示本地小时数。
 其他与gmtime相同。


 mktime:  mktime的参数是结构体指针,返回的是日历时间。

代码运行环境:CentOS 6.4-x86      gcc version 4.4.7

#include <stdio.h>
#include <time.h>
#include <stdlib.h>
#include <string.h>

int main()
{
	time_t t;
	time(&t);
	printf("%d\n",t);
	printf("output of ctime : %s",ctime(&t));//ctime()
	char buf[40];
	ctime_r(&t,buf);
	printf("output of ctime_r : %s",buf);//ctime_r()

	struct tm *now;
	now = gmtime(&t); //gmtime()
	printf("output of gmtime : %d/%d/%d %d:%d:%d\n",(1900+now->tm_year),
	  (1+now->tm_mon),now->tm_mday,(8+now->tm_hour),now->tm_min,now->tm_sec);
	
	now = localtime(&t); //localtime()
	printf("output of localtime: %d/%d/%d %d:%d:%d\n",(1900+now->tm_year),
		(1+now->tm_mon),now->tm_mday,now->tm_hour,now->tm_min,now->tm_sec);
	
	struct tm *con_now;//asctime()
	con_now = (struct tm *)malloc(sizeof(con_now));
	con_now->tm_year = 114;
	con_now->tm_mon = 5;
	con_now->tm_mday = 30;
	con_now->tm_wday = 1;
	con_now->tm_hour = 16;
	con_now->tm_min = 53;
	con_now->tm_sec = 34;
	printf("output of asctime: %s",asctime(con_now));
	printf("output of asctime: %s",asctime(localtime(&t)));
	
	printf("output of mktime: %d\n",mktime(con_now));//mktime()
	

	return 0;
}
第一次写技术博客,不对的地方请指正,多多交流。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值