time

获取从(1970-01-01 00:00:00 UTC)到至今的秒数

头文件:
    #include <time.h>
原型:
    time_t time(time_t *t);
参数:
    time_t *t:存储获取到的秒数; time_t:long int;
返回值:
    成功,返回获取到的秒数;
    失败,返回(time_t) -1;
例程:
    time_t t;
    //time(&t);
    t = time(NULL);
    printf("%ld\n", t);

localtime

将1970-01-01到至今的秒数,转换为日期和时间格式

头文件:
    #include <time.h>
原型:
    struct tm *localtime(const time_t *timep);
参数:
    time_t *timep:需要转换的秒数的地址;
返回值:
    成功,返回存储日期和时间信息的结构体地址:struct tm*
    失败,返回NULL;
    struct tm
    {
        int tm_sec;           /* Seconds. [0-60] (1 leap second) */ 秒
        int tm_min;           /* Minutes. [0-59] */ 分
        int tm_hour;          /* Hours.   [0-23] */ 时  
        int tm_mday;          /* Day.     [1-31] */ 日
        int tm_mon;           /* Month.   [0-11] */ 月 = tm_mon+1
        int tm_year;          /* Year - 1900.    */ 年 = tm_year+1900
        int tm_wday;          /* Day of week. [0-6] */星期 = tm_day+1
        int tm_yday;          /* Days in year.[0-365] */ 一年中的第几天
        int tm_isdst;         /* DST.     [-1/0/1]*/ 夏令时
    }
例程:
    time_t t;
    t = time(NULL);
    struct tm* tm = NULL;
    tm = localtime(&t);
    if(NULL == tm)
    {
        perror("localtime");
        return -1;
    }
    printf("%d-%02d-%02d %02d-%02d-%02d\n", tm->tm_year+1900,\
        tm->tm_mon+1, tm->tm_mday, tm->tm_hour, tm->tm_min,\
        tm->tm_sec);

asctime

返回一个字符串指针,指向可读格式的日期和时间信息

Www Mmm dd hh:mm:ss yyyy

星期(Www) 月份(Mmm) 月份中的第几天(dd) 时间(hh:mm:ss) 年份(yyyy)

头文件:
    #include <time.h>
原型:
    char *asctime(const struct tm *tm);
参数:
    struct tm *tm:存储日期和时间信息的结构体地址;
返回值:
    成功,返回一个字符串指针,指向可读格式的日期和时间信息;
    失败,返回NULL;
例程:
    time_t t;
    t = time(NULL);
    struct tm* tm = localtime(&t);
    puts(asctime(tm));
    //输出格式:Sat Apr 10 15:54:29 2021

ctime

返回一个字符串指针,指向可读格式的日期和时间信息

Www Mmm dd hh:mm:ss yyyy

星期(Www) 月份(Mmm) 月份中的第几天(dd) 时间(hh:mm:ss) 年份(yyyy)

头文件:
    #include <time.h>
原型:
    char *ctime(const time_t *timep);
参数:
    time_t *timep:秒数的地址;
返回值:
    成功,返回一个字符串指针,指向可读格式的日期和时间信息;
    失败,返回NULL;
例程:
    time_t t;
    t = time(NULL);
    puts(ctime(&t));
    //输出格式:Sat Apr 10 15:54:29 2021

strftime

自定义日期和时间的输出格式

头文件:
    #include <time.h>
原型:
    size_t strftime(char *s, size_t max, const char *format, const struct tm *tm);
参数:
    char *s:存储自定义日期格式的字符串首地址;
    size_t max:s指向的字符串的最大长度;
    const char *format:格式说明符,由函数替换为表示 tm 中所指定时间的相对应值;
    struct tm *tm:存储日期和时间信息的结构体地址;
返回值:
    成功,返回赋值到s指向的字符串中的字符总数;
    失败,返回0;
例程:
    time_t t;
    time(&t);
    struct tm *tm = localtime(&t);
    char date[N];
    strftime(date,N,"%Y-%m-%d %H:%M:%S",tm);
    puts(date);
    //输出格式:2021-04-10 16:16:01

格式说明符

%a     缩写的星期几名称    Sun
%A     完整的星期几名称    Sunday
%b     缩写的月份名称    Mar
%B     完整的月份名称    March
%c     日期和时间表示法    Sat Apr 10 15:54:29 2021
%d     一月中的第几天(01-31)
%H     24 小时格式的小时(00-23)
%I     12 小时格式的小时(01-12)
%j     一年中的第几天(001-366)
%m     十进制数表示的月份(01-12)
%M     分(00-59)
%p     AM 或 PM 名称
%S     秒(00-61)
%U     一年中的第几周,以第一个星期日作为第一周的第一天(00-53)
%w     十进制数表示的星期几,星期日表示为 0(0-6)
%W     一年中的第几周,以第一个星期一作为第一周的第一天(00-53)
%x     日期表示法 04/10/21
%X     时间表示法 16:27:48
%y     年份,最后两个数字(00-99)
%Y     年份 2021
%Z     时区的名称或缩写 CDT
%%     符号%
Last modification:2021 年 04 月 10 日 16 : 35 : 58