Linux C函数库之时间函数

asctime(将时间和日期以字符串的格式表示)

表头文件:

#include <time.h>

定义函数:

char *asctime(const struct tm *timeptr)

功能说明:

asctime()将参数timeptr所指的tm结构中的信息转换成真是世界所使用的时间日期表示方法,然后将结果以字符串的形式返回。

参数说明:

timeptr 是指向 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;       /* 夏令时                            */    
};

示例代码:

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

int main()
{
   struct tm t;

   t.tm_sec    = 10;
   t.tm_min    = 10;
   t.tm_hour   = 6;
   t.tm_mday   = 25;
   t.tm_mon    = 2;
   t.tm_year   = 89;
   t.tm_wday   = 6;

   puts(asctime(&t));
   
   return(0);
}

结果展示:

Sat Mar 25 06:10:10 1989

clock(取得进程占用CPU的大约时间)

表头文件:

#include <time.h>

定义函数:

clock_t clock(void)

功能说明:

clock()用来取得进程所占CPU的大约时间。

ctime(取得进程占用CPU的大约时间)

表头文件:

#include <time.h>

定义函数:

char *ctime(const time_t *timep)

功能说明:

ctime()将参数timep所指的time_t结构中的信息转换成真实世界所使用的时间提起表示方法,然后将结果以字符串的形态返回。

difftime(计算时间差距)

表头文件:

#include <time.h>

定义函数:

double difftime(time_t time1, time_t time2)

功能说明:

difftime(time_t time1, time_t time2) 返回 time1 和 time2 之间相差的秒数 (time1 - time2)。这两个时间是在日历时间中指定的,表示了自纪元 Epoch(协调世界时 UTC:1970-01-01 00:00:00)起经过的时间。

#include <stdio.h>
#include <time.h>
#ifdef _WIN32
#include <Windows.h>
#else
#include <unistd.h>
#endif
 
int main ()
{
   time_t start_t, end_t;
   double diff_t;
 
   printf("程序启动...\n");
   time(&start_t);
 
   printf("休眠 5 秒...\n");
   Sleep(5);
 
   time(&end_t);
   diff_t = difftime(end_t, start_t);
 
   printf("执行时间 = %f\n", diff_t);
   printf("程序退出...\n");
 
   return(0);
}

结果展示:

程序启动...
休眠 5 秒...
执行时间 = 5.000000
程序退出...

ftime(取得目前的时间和日期)

表头文件:

#include <time.h>

定义函数:

int ftime(struct timeb *tp)

功能说明:

ftime()将目前日期由tp所指的结构返回。tp结构定义:

struct   timeb{
       time_t   time;                /* 为1970-01-01至今的秒数*/
       unsigned   short   millitm;   /* 千分之一秒即毫秒 */
       short   timezonel;            /* 为目前时区和Greenwich相差的时间,单位为分钟 */
       short   dstflag;              /* 为日光节约时间的修正状态,如果为非0代表启用日光节约时间修正 */
};

gmtime(取得目前的时间和日期)

表头文件:

#include <time.h>

定义函数:

struct tm *gmtime(const time_t *timer)

功能说明:

gmtime(const time_t *timer) 使用 timer 的值来填充 tm 结构,并用协调世界时(UTC)也被称为格林尼治标准时间(GMT)表示。该函数返回指向 tm 结构的指针,该结构带有被填充的时间信息。下面是 timeptr 结构的细节:

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;       /* 夏令时                        */    
};

localtime(取得当地目前的时间和日期)

表头文件:

#include <time.h>

定义函数:

struct tm *localtime(const time_t *timer)

功能说明:

localtime()将参数timep所指的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 到 11                */
   int tm_year;        /* 自 1900 起的年数                */
   int tm_wday;        /* 一周中的第几天,范围从 0 到 6                */
   int tm_yday;        /* 一年中的第几天,范围从 0 到 365                    */
   int tm_isdst;       /* 夏令时                        */    
};

mktime(将时间结构数据转换成经过的秒数)

表头文件:

#include <time.h>

定义函数:

time_t mktime(struct tm *timeptr)

功能说明:

mktime(struct tm *timeptr) 把 timeptr 所指向的结构转换为自 1970 年 1 月 1 日以来持续时间的秒数。

strftime(格式化日期和时间)

表头文件:

#include <time.h>

定义函数:

size_t strftime(char *str, size_t maxsize, const char *format, const struct tm *timeptr)

功能说明:

strftime()会将参数tm的时间结构,依照参数format所指定的字符串格式做转换,转换后的字符串内容将复制到参数s所指的字符串数组中,该字符串的最大长度为参数max所控制。

参数说明:

  • str -- 这是指向目标数组的指针,用来复制产生的 C 字符串。
  • maxsize -- 这是被复制到 str 的最大字符数。
  • format -- 这是 C 字符串,包含了普通字符和特殊格式说明符的任何组合。这些格式说明符由函数替换为表示 tm 中所指定时间的相对应值。格式说明符是:
说明符替换为实例
%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
%%一个 % 符号%
  • timeptr -- 这是指向 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;       /* 夏令时                        */    
};

time(取得目前的时间)

表头文件:

#include <time.h>

定义函数:

time_t time(time_t *seconds)

功能说明:

此函数会返回从公元1970年1月1日的UTC时间的0时0分0秒算起到现在所经过的秒数。如果 seconds 不为空,则返回值也存储在变量 seconds 中。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值