c语言标准库详解(十四):时间函数time.h

您所在的位置:网站首页 c语言的库文件有哪些 c语言标准库详解(十四):时间函数time.h

c语言标准库详解(十四):时间函数time.h

2024-07-10 12:53| 来源: 网络整理| 查看: 265

c语言标准库详解(十四):时间函数 概述

头文件中声明了一些处理日期与时间的类型和函数。其中的一些函数用于处理当地时间,因为时区等原因,当地时间与日历时间可能不相同。clock_t和time_t是两个表示时间的算数类型,struct tm用于保存日历时间的各个构成部分。

struct tm

结构tm中各成员的用途及取值范围如下所示:

成员名称 涵义 int tm_sec; 从当前分钟开始经过的秒数(0, 61) int tm_min; 从当前小时开始经过的分钟数(0, 59) int tm_hour; 从午夜开始经过的小时数(0, 23) int tm_mday; 当月的天数(1, 31) int tm_mon; 从 1 月起经过的月数(0, 11) int tm_year; 从 1900 年起经过的年数 int tm_wday; 从星期天起经过的天数(0, 6) int tm_yday; 从 1 月 1 日起经过的天数(0, 365) int tm_isdst; 夏令时标记 (巨坑)

使用夏令时,tm_isdst的值为正,否则为0.如果该信息无效,则其值为负。

clock()函数 clock_t clock(void)

clock 函数返回程序开始执行后占用的处理器时间。如果无法获取处理器时间,则返回值为-1。clock()/CLOCKS_PER_SEC 是以秒为单位表示的时间。

time()函数 time_t time(time_t *tp)

time函数返回当前日历时间。如果无法获取日历时间,则返回值为-1。 如果tp不是NULL, 则同时将返回值赋给*tp。

difftime()函数 double difftime(time_t time2, time_t time1)

difftime 函数返回 time2-time1 的值(以秒为单位)。

mktime()函数 time_t mktime(struct tm *tp)

mktime 函数将结构*tp 中的当地时间转换为与 time 表示方式相同的日历时间,结构中各成员的值位于上面所示范围之内。mktime 函数返回转换后得到的日历时间;如果该时间不能表示,则返回-1。

下面 4 个函数返回指向可被其它调用覆盖的静态对象的指针。 asctime() char *asctime(const struct tm *tp)

asctime函数将结构*tp中的时间转换为下列所示的字符串形式: Sun Jan 3 15:14:13 1988\n\0

ctime() char *ctime(const time_t *tp)

ctime 函数将结构*tp 中的日历时间转换为当地时间。它等价于下列函数调用:

asctime(localtime(tp)) gmtime() struct tm *gmtime(const time_t *tp)

gmtime 函数将*tp 中的日历时间转换为协调世界时(UTC)。如果无法获取 UTC,则该函数返回 NULL。函数名字 gmtime 有一定的历史意义。

localtime() struct tm *localtime(const time_t *tp)

localtime 函数将结构*tp 中的日历时间转换为当地时间。

strftime()函数 size_t strftime(char *s, size_t smax, const char *fmt, const struct tm *tp)

strftime 函数根据 fmt 中的格式把结构*tp 中的日期与时间信息转换为指定的格式,并存储到 s 中,其中 fmt 类似于 printf 函数中的格式说明。普通字符(包括终结符’\0’)将复制到 s 中。每个%c 将按照下面描述的格式替换为与本地环境相适应的值。最多 smax 个字符写到 s 中。strftime 函数返回实际写到 s 中的字符数(不包括字符’\0’);如果字符数多于smax,该函数将返回值 0。 fmt 的转换说明及其含义如下所示:

模式 涵义 %a 一星期中各天的缩写名 %A 一星期中各天的全名 %b 缩写的月份名 %B 月份全名 %c 当地时间和日期表示 %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-6,星期日为 0) %W 一年中的星期序号(00-53,将星期一看作是每周的第一天) %x 当地日期表示 %X 当地时间表示 %y 不带世纪数目的年份(00-99) %Y 带世纪数目的年份 %Z 时区名(如果有的话) %% %本身 示例 time()函数

代码:

#include #include int main () { time_t seconds; seconds = time(NULL); printf("自 1970-01-01 起的小时数 = %ld\n", seconds/3600); return(0); }

输出:

PS G:\CSAPP


【本文地址】


今日新闻


推荐新闻


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