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
%H24 小时格式的小时(00-23)14
%I12 小时格式的小时(01-12)05
%j一年中的第几天(001-366)231
%m十进制数表示的月份(01-12)08
%M分(00-59)55
%pAM 或 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;
}


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值