zoukankan      html  css  js  c++  java
  • c--日期和时间函数

    C的标准库<time.h>包含了一些处理时间与日期的函数。

    1.clock_t clock(void);

    函数返回程序自开始执行后的处理器时间,类型是clock_t,单位是tick。如果有错误,clock()函数就返回-1。

    类型clock_t在<time.h>中定义,等价于size_t类型。CLOCKS_PER_SEC是<time.h>中定义的宏,表示一秒内的tick数,且是clock_t类型。将clock()函数返回值除以CLOCKS_PER_SEC,得到处理器运行时间。

    代码示例:

    #include <stdio.h>
    #include<time.h>
    #include<windows.h>
    #include<stdlib.h>
    main()
    {
        clock_t start,end;
        double cpu_time;
        start = clock();
        Sleep(2000);
        end = clock();
        cpu_time = (double)(end-start)/CLOCKS_PER_SEC;
        printf("%.2lf",cpu_time);
        system("pause");
    }

    输出结果:2.00

    2. time_t time(time_t *time_t)
    time()函数返回从1970年1月1日格林威治时间0点0分0秒到现在的秒数。类型time_t在<time.h>中定义,等价于long。
    如果变元不是NULL,则返回值就存在time_t变元指向的位置中。

    double difftime(time_t T2,time_t T1)
    返回T2-T1的数值,类型是double,单位是秒。

    代码示例:

    #include <stdio.h>
    #include<time.h>
    #include<windows.h>
    #include<stdlib.h>
    main()
    {
        time_t calendar_start,calendar_end;
        calendar_start = time(NULL);
        Sleep(2000);
        calendar_end = time(NULL);
        printf("start:%d
    ",calendar_start);
        printf("end:%d
    ",calendar_end);
        printf("diff:%.0lf
    ",difftime(calendar_end,calendar_start));
        system("pause");
    }

    输出结果:
    start:1460010918
    end:1460010920
    diff:2

    3.char *ctime(const time_t *timer)
    函数接收一个time_t变量的指针作为变元,返回一个指向26个字符的字符串指针。其中有星期,日期,时间以及年,最后用一个 和终止。如:"Mon Aug 25 10:45:36 2015 "

    代码示例:

    #include <stdio.h>
    #include<time.h>
    #include<stdlib.h>
    main()
    {
        time_t calendar;
        calendar = time(NULL);
        printf("%s
    ",ctime(&calendar));
        system("pause");
    }

    输出结果:Thu Apr 07 14:34:10 2016

    4.struct tm *localtime(const time_t* timer)
    函数接收一个time_t值的指针,返回结构类型tm的指针。

    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日开始的天数 */
    int tm_isdst; /* 夏令时标识符。*/
    }

    代码示例:

    #include <stdio.h>
    #include<time.h>
    #include<stdlib.h>
    main()
    {
        time_t calendar;
        struct tm *time_data;
        char *month[] = {"一月","二月","三月","四月","五月","六月","七月","八月","九月","十月","十一月","十二月"};
        char *week[] = {"星期一","星期二","星期三","星期四","星期五","星期六","星期日"};
        char *suffix[] = {"st","nd","rd","th"};
        enum suffixIndex {st,nd,rd,th} sufsel = th;
        calendar = time(NULL);
        time_data = localtime(&calendar);
        printf("format date:%d/%d/%d
    ",time_data->tm_year+1900,time_data->tm_mon,time_data->tm_mday);
        switch(time_data->tm_mday)
        {
        case 1:
        case 21:
        case 31:
            sufsel = st;
            break;
        case 2:
        case 22:
            sufsel = nd;
            break;
        case 3:
        case 23:
            sufsel = rd;
            break;
        default:
            sufsel = th;
            break;
        }
        printf("today is %s,%s,%d%s,%d",week[time_data->tm_wday],month[time_data->tm_mon],time_data->tm_mday,suffix[sufsel],time_data->tm_year+1900);
        system("pause");
    }

    输出结果:
    format date:2016/3/7
    today is 星期五,四月,7th,2016

    4.localtime()函数生成的是本地时间,若要使用UTC(世界调整时间),可使用gmtime()函数

    5.time_t mktime(struct tm *ptime)
    函数接收一个tm结构的变元指针,返回值类型为timt_t。

  • 相关阅读:
    一个弹框表单复用create,edit表单操作
    数组去重,防抖节流,渲染几万条数据不卡页面,32个手撕JS,彻底摆脱初级前端
    解决vue表单回显数据无法修改的问题
    正则
    将UTC时间转换为当地的时间
    Vue页面上实时显示当前时间,每秒更新
    互联网协议
    记录:批量重命名文件夹下的文件
    IdentityServer4 无法登录,一直跳转登录界面
    同解与等价
  • 原文地址:https://www.cnblogs.com/shijingjing07/p/5364195.html
Copyright © 2011-2022 走看看