time.h

1、struct tm结构体

struct tm

{

  int tm_sec; /* 秒 – 取值区间为[0,59] */
  int tm_min; /* 分 - 取值区间为[0,59] */
  int tm_hour; /* 时 - 取值区间为[0,23] */
  int tm_mday; /* 一个月中的日期 - 取值区间为[1,31] */
  int tm_mon; /* 月份(从一月开始,0代表一月) - 取值区间为[0,11] */
  int tm_year; /* 年份,其值等于实际年份减去1900 */
  int tm_wday; /* 星期 – 取值区间为[0,6],其中0代表星期天,1代表星期一,以此类推 */
  int tm_yday; /* 从每年的1月1日开始的天数 – 取值区间为[0,365],其中0代表1月1日,1代表1月2日,以此类推 */
  int tm_isdst; /* 夏令时标识符,实行夏令时的时候,tm_isdst为正。不实行夏令时的进候,tm_isdst为0;不了解情况时,tm_isdst()为负。*/

};

2、函数介绍

time_t time(time_t *t) : 单位秒,从1970年1月1日算起

char *ctime(time_t *t) : 将秒转化成字符串,格式为:星期 月 日 时:分:秒 年

struct tm *localtime(const time_t *t) : 将秒转化成结构体,区时为本地区时

time_t mktime(struct tm *t) : 将结构体转成秒

char *asctime(struct tm *t) : 将结构体转字符串,格式为:星期 月 日 时:分:秒 年


double difftime(time_t t1,time_t t2) : 返回相差秒数

struct tm *gmtime(const time_t *t) : 将秒转为结构体,但区时为格林威治

size_t strftime(char *str,size_t maxsize,const char *format,const struct tm *t) :  将结构体按照format格式化转成字符串存放在str里,maxsize为字符串准备接受的长度

其中format的格式:数据来源

说明符 替换为 实例
%a 缩写的星期几名称 Sun
%A 完整的星期几名称 Sunday
%b 缩写的月份名称 Mar
%B 完整的月份名称 March
%c 日期和时间表示法 Sun Aug 19 02:56:02 2012
%d 一月中的第几天(01-31) 19
%H 24 小时格式的小时(00-23) 14
%I 12 小时格式的小时(01-12) 05
%j 一年中的第几天(001-366) 231
%m 十进制数表示的月份(01-12) 08
%M 分(00-59) 55
%p AM 或 PM 名称 PM
%S 秒(00-61) 02
%U 一年中的第几周,以第一个星期日作为第一周的第一天(00-53) 33
%w 十进制数表示的星期几,星期日表示为 0(0-6) 4
%W 一年中的第几周,以第一个星期一作为第一周的第一天(00-53) 34
%x 日期表示法 08/19/12
%X 时间表示法 02:50:06
%y 年份,最后两个数字(00-99) 01
%Y 年份 2012
%Z 时区的名称或缩写 CDT
%% 一个 % 符号 %

clock_t clock(void) : 计算程序经过的时钟记时单元,除以CLOCKS_PER_SEC得到秒

3、代码示例

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

int main()
{
    time_t second,second2;
    char *str,buf[80];
    struct tm *t;
    clock_t start,end;

    start = clock();

    time(&second);//miao
    printf("%ld\n",second);
    str = ctime(&second);
    printf("%s\n",str);

    t = localtime(&second);
    printf("%d-%d-%d %d:%d:%d\n",t->tm_year+1900,t->tm_mon+1,t->tm_mday,t->tm_hour,t->tm_min,t->tm_sec);
    t = gmtime(&second);
    printf("%d-%d-%d %d:%d:%d\n",t->tm_year+1900,t->tm_mon+1,t->tm_mday,t->tm_hour,t->tm_min,t->tm_sec);
    second2 = mktime(t);
    printf("%ld\n",second2);
    str = asctime(t);
    printf("%s\n",str);

    strftime(buf,80,"%x %X",t);
    printf("%s\n",buf);

    end = clock();
    printf("%ld %ld\n",start,end);
    printf("%lf\n",(double)(end-start)/CLOCKS_PER_SEC);
    return 0;
}


你可能感兴趣的:(C语言,time.h)