日期和时间:time.h

作者:追风剑情 发布于:2020-4-28 21:16 分类:C

time.h定义了3个宏。第1个宏是表示空指针的NULL,许多其他头文件中也定义了这个宏。第2个宏是CLOCKS_PER_SEC,该宏除以clock()的返回值得以秒为单位的时间值。第3个宏(C11)是TIME_UTC,这是一个正整型常量,用于指定协调世界时(即UTC)。该宏是timespec_get()函数的一个可选参数。UTC是目前主要世界时间标准,作为互联网和万维网的普通标准,广泛应用于航空、天气预报、同步计算机时钟等各领域。

time.h中定义的类型
类型 描述
size_t sizeof运算符返回的整数类型
clock_t 适用于表示时间的算术类型
time_t 适用于表示时间的算术类型
struct timespec 以秒和纳秒为单位储存指定时间间隔的结构(C11)
struct tm 储存日历时间的各部分
timespec结构中的成员
成员 描述
time_t tv sec 秒(>=0)
long tv_nsec 纳秒([0, 999999999])
struct tm结构中的成员
成员 描述
int tm_sec 分后的秒(0-61)
int tm_min 小时后的分(0-59)
int tm_hour 小时(0-23)
int tm_mday 一个月的天数(0-31)
int tm_mon 一月后的月数(0-11)
int tm_year 1900年后的年数
int tm_wday 星期日开始的天数(0-6)
int tm_yday 从1月1日开始的天数(0-365)
int tm_isdst 夏令时标志(大于0说明夏令时有效,等于0说明无效,小于0说明信息不可用)
时间函数
成员 描述
clock_t clock(void)
该函数返回实现从开始执行程序到调用该函数时,处理器经过的最接近的时间。该函数的返回值除以CLOCK_PER_SEC得到以秒为单位的时间。如果时间不可用或无法表示,函数返回(clock_t)(-1)
double difftime(time_t t1, time_t t0)
返回两个日历时间(t1-t0)的差值。该函数返回计算结果,单位是秒
time_t mktime(struct tm *tmptr)
把tmptr指向的结构中的分解时间转换为日历时间。其编码与time()函数相同,但是结构变了,以便对结构中超出范围的值进行调整(例如,2分100秒会调整为3分40秒),而且把tm_wday和tm_yday设置为其他成员指定的值。如果无法表示日历时间,该函数返回(time_t)(-1);否则以time_t格式返回日历时间。
time_t time(time_t *ptm)
返回当前日历时间,并将其储存在ptm指向的位置,假设ptm不是空指针。如果日期时间不可用,该函数返回(time_t)(-1)
int timespec_get(struct timespec *ts, int base)
根据指定的时基,把ts指向的结构设置为当前日历时间。如果成功,返回base(非0值),否则返回0(C11)
char *asctime(const struct tm *tmpt) 把tmpt指向的结构中的分解时间转换成Thu Feb 26 13:14:33 1998\n\0格式的字符串,并返回指向该字符串的指针
char *ctime(const time_t *ptm) 把ptm指向的结构中的分解时间转换成 Wed Aug 11 10:48:24 1999\n\0格式的字符串,并返回指向该字符串的指针
struct tm *gmtime(const time_t *ptm) 把ptm指向的日历时间转换成协调世界时(UTC)表示的分解时间,返回一个指向结构的指针,该结构中储存时间信息。如果UTC不可用,则返回NULL
struct tm* localtime(const time_t *ptm) 把ptm指向的日历时间转换成本地时间表示的分解时间,储存tm结构并返回指向该结构的指针。

size_t strftime(char *restrict s, size_t max const char *restrict fmt, const struct tm *restrict tmpt)

把字符串fmt拷贝到字符串s中,用tmp指向的分解时间结构中的合适数据替换fmt中的转换说明。最多在s中放入max个字符。该函数返回放入s中的字符数(不包括空格);如果字符串中的字符数大于max,函数返回0,且s中的内容不确定。
strftime()函数中使用的转换说明
转换说明 被替换为
%a 本地化的星期名称缩写
%A 本地化的星期名称全名
%b 本地化的月份名称缩写
%B 本地化的月份名称全名
%c 本地化指定的日期和时间
%C 年份的后两位数字(年份除以100,取小数部分的数)(00-99)
%d 十进制数表示的月份中的某天(01-31)
%D 月/日/年,等份于“%m%d%y”
%e 十进制数表示的月份中的某天,在仅一位的数字前有一个空格(1-31)
%F 年-月-日,等份于“%Y-%m-%d”
%g 基于周的年份的最后两位数字(00-99)
%G 十进制数表示的基于周的年份
%h 等价于“%b”
%H 十进制数(00-23)表示的小时(24小时制)
%I 十进制数(01-12)表示的小时(12小时制)
%j 十进制数表示的一年中的某天(001-366)
%m 十进制数表示的月份(01-12)
%n 换行符
%M 十进制数表示的分钟(00-59)
%p 等价于本地12小时制中的am/pm
%r 本地的12小时制
%R 小时:分钟,等价于"%H:%M"
%S 十进制数表示的秒(00-61)
%t 水平制表符
%T 小时:分钟:秒,等价于“%H:%M:%S”
%u ISO 8601的星期数(1-7),星期一为1
%U 一年中的周数(00~53),把星期天作为一周的第1天
%V ISO 8601的一年周数(00~53),把星期天作为一周的第1天
%w 十进制表示的星期数(0~6),从星期天开始
%W 一年的周数(00~53),把星期一作为一周的第1天
%x 本地化日期表示
%X 本地化时间表示
%y 不带世纪的十进制年份(00~99)
%Y 带世纪的十进制年份
%z 按照ISO 8601格式的相对UTC偏移(“-800”表示格林威治时间后的8小时,即是向西8小时),如果无可用信息则无替换字符
%Z 时区名,如果无可用信息则无替换字符
%% %(即百分号)

标签: C语言

Powered by emlog  蜀ICP备18021003号   sitemap

川公网安备 51019002001593号