C 语言中的 time 函数总结

您所在的位置:网站首页 linux的time函数 C 语言中的 time 函数总结

C 语言中的 time 函数总结

#C 语言中的 time 函数总结 | 来源: 网络整理| 查看: 265

编程中经常用到时间表达及转换的函数,它们都定义在 time.h 库函数中,在此做一下总结,以方便后续查看使用。

几个时间概念:

1:Coordinated Universal Time(UTC):

协调世界时,又称世界标准时间,也即格林威治标准时间(Greenwich Mean Time,GMT),中国内地的时间与UTC得时差为+8,也即UTC+8,美国为UTC-5。

2:Calendar Time:

日历时间,是用"从一个标准时间点到此时的时间经过的秒数"来表示的时间。标准时间点对不同编译器可能会不同,但对一个编译系统来说,标准时间是不变的。一般是表示距离UTC时间 1970-01-01 00:00:00的秒数。

3:epoch:

时间点。在标准c/c++中是一个整数,用此时的时间和标准时间点相差的秒数(即日历时间)来表示。

4:clock tick:

时钟计时单元(而不叫做时钟滴答次数),一个时钟计时单元的时间长短是由cpu控制的,一个clock tick不是cpu的一个时钟周期,而是c/c++的一个基本计时单位。

time.h 的定义

time.h 头文件定义了四个变量类型、两个宏和各种操作日期和时间的函数。

4个变量 size_t 是无符号整数类型,它是 sizeof 关键字的结果。 clock_t 这是一个适合存储处理器时间的类型,类型为unsigned long time_t 这是一个适合存储日历时间类型。 struct 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 到 11(注意)  */    int tm_year;        /* 自 1900 年起的年数      */    int tm_wday;        /* 一周中的第几天,范围从 0 到 6 */    int tm_yday;        /* 一年中的第几天,范围从 0 到 365   */    int tm_isdst;       /* 夏令时               */ }; 两个宏 NULL 这个宏是一个空指针常量的值。 CLOCKS_PER_SEC 这个宏表示每秒的处理器时钟个数。用于将clock()函数的结果转化为以秒为单位的量,这个量的具体值是与操作系统相关的,通常为1000。 库函数 1:clock函数

函数原型: clock_t clock(void)

函数返回:返回clock函数执行起(一般为程序的开头),处理器时钟所使用的时间。

函数功能:用来计算程序或程序的某一段的执行时间。

实例 #include #include int main() {     clock_t start_t,finish_t;     double total_t = 0;     int i = 0;     start_t = clock();     for(;itm_hour+BST)%24, info->tm_min);    printf("中国:%2d:%02d\n", (info->tm_hour+CCT)%24, info->tm_min);    return(0); } 8:mktime函数

函数原型:time_t mktime(struct tm *timeptr)

函数功能:把 timeptr 所指向的结构转换为一个依据本地时区的 time_t 值

函数返回:该函数返回一个 time_t 值,该值对应于以参数传递的日历时间。如果发生错误,则返回 -1 值。

实例 #include #include int main () {    int ret;    struct tm info;    char buffer[80];    info.tm_year = 2001 - 1900;    info.tm_mon = 7 - 1;    info.tm_mday = 4;    info.tm_hour = 0;    info.tm_min = 0;    info.tm_sec = 1;    info.tm_isdst = -1;    ret = mktime(&info);    if( ret == -1 )    {        printf("错误:不能使用 mktime 转换时间。\n");    }    else    {       strftime(buffer, sizeof(buffer), "%c", &info );       print(buffer);    }    return(0); } 9:strftime函数

函数原型: size_t strftime( char *strDest, size_t maxsize, const char *format, const struct tm *timeptr);

函数功能: 根据format指向字符串中格式命令把timeptr中保存的时间信息放在strDest指向的字符串中,最多向 strDest中存放maxsize个字符。

参数说明: 转化结果存在s中,最多maxsize个字符写到s中

函数返回: 该函数返回向strDest指向的字符串中放置的字符数(不包括'\0'),如果字符数多于maxsize,函数返回0。

实例 /*format如下:它们是区分大小写的。     %a 星期几的简写     %A 星期几的全称     %b 月分的简写     %B 月份的全称     %c 标准的日期的时间串     %C 年份的后两位数字     %d 十进制表示的每月的第几天     %D 月/天/年     %e 在两字符域中,十进制表示的每月的第几天     %F 年-月-日     %g 年份的后两位数字,使用基于周的年     %G 年分,使用基于周的年     %h 简写的月份名     %H 24小时制的小时     %I 12小时制的小时     %j 十进制表示的每年的第几天     %m 十进制表示的月份     %M 十时制表示的分钟数     %n 新行符     %p 本地的AM或PM的等价显示     %r 12小时的时间     %R 显示小时和分钟:hh:mm     %S 十进制的秒数     %t 水平制表符     %T 显示时分秒:hh:mm:ss     %u 每周的第几天,星期一为第一天 (值从0到6,星期一为0)     %U 第年的第几周,把星期日做为第一天(值从0到53)     %V 每年的第几周,使用基于周的年     %w 十进制表示的星期几(值从0到6,星期天为0)     %W 每年的第几周,把星期一做为第一天(值从0到53)     %x 标准的日期串     %X 标准的时间串     %y 不带世纪的十进制年份(值从0到99)     %Y 带世纪部分的十进制年份     %z,%Z 时区名称,如果不能得到时区名称则返回空字符。     %% 百分号 */   #include #include int main () {    time_t rawtime;    struct tm *info;    char buffer[80];    time( &rawtime );    info = localtime( &rawtime );    strftime(buffer,80,"%Y%m%e_%H%M%S", info);//以年月日_时分秒的形式表示当前时间    printf("%s\n", buffer );    return(0); }

作者:hmxz2nn

原文:https://blog.csdn.net/hmxz2nn/article/details/77986450



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3