概述
使用下列函数需现包含下面的头文件:
#include <time.h>
获取当前时间:
time_t time(time_t *seconds)
返回(1970-01-01 00:00:00 UTC)起经过的时间(日历时间),以秒为单位。如果 seconds 不为空,则返回值也存储在变量 seconds 中
将time_t类型日期时间转换为 struct tm类型的日期时间:
struct tm *gmtime(const time_t *timer)
此函数返回的是UTC时间。
struct 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; /* 夏令时*/
};
将struct tm类型日期时间转换为 time_t类型的日期时间:
time_t mktime(struct tm *timeptr)
字符串转时间函数:
char *strptime(const char *buf,const char *format,struct tm *timeptr)
buf: 要转换的字符串(以0结尾);
format: 字符串格式
struct tm *timeptr:转换后存储tm值的指针;
返回值: 指向转换过程处理的最后一个字符后面的那个字符。
format参数:
转换控制符 说明
%a 星期几的简写形式
%A 星期几的全称
%b 月份的简写形式
%B 月份的全称
%c 日期和时间
%d 月份中的日期,0-31
%H 小时,00-23
%I 12进制小时钟点,01-12
%j 年份中的日期,001-366
%m 年份中的月份,01-12
%M 分,00-59
%p 上午或下午
%s 秒,00-60
%u 星期几,1-7
%w 星期几,0-6
%x 当地格式的日期
%X 当地格式的时间
%y 年份中的最后两位数,00-99
%Y 年
%Z 地理时区名称
struct tm结构时间转换为字符串:
size_t strftime(char *str, size_t maxsize, const char *format, const struct tm *timeptr)
str 是指向目标数组的指针,用来复制产生的 C 字符串。
maxsize 是被复制到 str 的最大字符数。
format参数同strptime函数
如果产生的 C 字符串小于 maxsize 个字符(包括空结束字符),则会返回复制到 str 中的字符总数(不包括空结束字符),否则返回零。
示例代码:
//比较两个时间
time_t t1;
time_t t2;
struct tm timeptr;
struct tm *tmp;
strptime(row[0], "%Y-%m-%d %H:%M:%S", &timeptr);//row[0]是从数据库中查询到的时间,是字符串格式,要转换成struct tm格式
t2 = mktime(&timeptr);//struct tm格式转换为time_t格式
t1 = time(NULL);//当前的时间
tmp = gmtime(&t1);//日历时间转换为UTC时间,与t2保持一致
t1 = mktime(tmp);
if((t1-t2)<600){//两个时间相差10min
/*do something*/
}
最后
以上就是诚心宝马为你收集整理的c 时间库函数的全部内容,希望文章能够帮你解决c 时间库函数所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复