概述
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 2014n”。(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("%dn",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:%dn",(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:%dn",(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: %dn",mktime(con_now));//mktime()
return 0;
}
第一次写技术博客,不对的地方请指正,多多交流。
最后
以上就是花痴黑裤为你收集整理的c语言中的time ctime asctime gmtime localtime mktime的全部内容,希望文章能够帮你解决c语言中的time ctime asctime gmtime localtime mktime所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复