C 编程/time.h/函数参考
asctime(), asctime_r(),
在 C 语言中,函数 asctime() 包含在库函数 time.h 中。此函数将时间结构转换为 ASCII 字符串。它将以 Day Month Date Time Year\n\0 的形式显示。例如 Sun Sep 5 10:56:01 2011\n\0。此函数将分解的时间值转换为与 ctime() 格式相同的字符串。函数 asctime_r() 执行相同操作,但它将字符串存储在用户提供的缓冲区中,该缓冲区至少有 26 字节的内存。
在 C 编程中,使用函数 asctime()、asctime_r()。我们可以通过调用函数 gmtime()、gmtime64()、localtime() 来获取时间。asctime() 函数使用 24 小时制。日期显示为:mon、tue、wed、thu、fri、sat、sun,月份显示为:jan、feb、mar、apr、may、jun、jul、aug、sep、oct、nov、dec。换行符 (\n) 和空格 (/0) 占据字符串的最后两个位置。该字符串产生的结果包含正好 26 个字符。asctime() 始终将此字符串保存到同一个位置。每次调用此函数时,旧字符串都会被覆盖。此函数的时间从世界标准时间 00:00:00 开始,日期从 1970 年 1 月 1 日开始。
clock_t clock()
此函数返回实现对进程自实现定义的时代(仅与进程调用相关)开始以来使用的处理器时间的最佳近似值。
在计算中,ctime 是自 1970 年 1 月 1 日 0:00:00 UTC 以来经过的秒数。通常存储为 32 位有符号整数,此数字用于在许多计算机和操作系统(如 Linux 和 UNIX 变体)以及某些编程语言中精确定位日期。它将在 2038 年溢出并导致 2038 年问题;一些人预计这将类似于 Y2K 的有利可图的非事件。
ctime 也是一个 Unix 库调用,它以人类可读的 ASCII 字符串形式返回本地时间。
Unix 文件系统中的 ctime 是一个文件属性,它指示文件的 inode 最后修改的时间。
C 库为我们提供了 difftime
函数,它返回两个日历日期之间经过的时间。此函数在头文件 time.h
中定义。它返回差值 (t2 - t1),其中 t1 是初始时间,t2 是结束时间,以秒为单位,作为双精度浮点数。此函数很重要,因为类型 time_t 上没有定义通用算术运算。
函数 difftime 在头文件“time.h”中声明。
语法:double difftime(time_t time2, time_t time1);
序言:difftime 从 time2 中减去 time1 以计算 time1 和 time2 之间经过的时间。该值以经过的秒数计算。参数通常通过对 time 函数的两次调用获得。
返回值:返回 time1 和 time2 之间的差值(以秒为单位)。
示例
main()
{
int sec;
time_t start_time, finish_time;
time(&start_time); //in time.h header file
for ( sec = 1; sec <= 6; sec++)
{
printf("%d\r", sec);
sleep(1);
}
time(&finish_time);
printf("\nDifference is %.2f seconds",difftime(finish_time, start_time));
}
输出
6
差值为 6.00 秒
struct tm *gmtime(const time_t *timer)
此函数将自纪元以来以秒为单位的时间(timer 指向)转换为分解的时间,以协调世界时 (UTC) 表示。
localtime()
是 time.h
中的库函数。它将日历时间转换为本地时间。
#include <time.h>
struct tm * localtime ( const time_t * ptr_time );
参数
指针 'ptr_time' 是指向包含日历时间的 'time_t' 对象的指针。
返回值
函数 localtime() 返回指向 tm 结构的指针。tm 结构包含时间信息。
函数 localtime() 使用指针 ptr_time 指向的时间来填充 tm 结构,其中包含表示相应本地时间的数值。如果调用此函数,它将以以下形式返回本地时间
"day Month date hr:min:sec year"((输出)).
time_t mktime(struct tm *timeptr);
此函数将由 timeptr 指向的结构体中表示为本地时间的分解时间转换为自纪元以来的时间值,该值的编码与 time() 函数返回值的编码相同。结构体中 tm_wday 和 tm_yday 成分的原始值将被忽略,其他成分的原始值不受 <time.h> 中描述的范围限制。