一、相关函数介绍

1.1 ctime()函数

#include char *ctime(const time_t *timer)

①函数功能:将日历时间参数time转换为一个表示本地当前时间的字符串;
②函数参数:timer为time()函数获得
③函数返回值:返回字符串格式(星期 月 日 小时:分:秒 年);

1.2 localtime()函数

struct tm *localtime(const time_t *timer);

tm结构:

struct tm{int tm_sec;int tm_min;int tm_hour;int tm_mday;int tm_mon;int tm_year;int tm_wday;int tm_yday;int tm_isdst;};

①函数功能:使用timer的值填充tm结构体,其值会被分解为tm结构,并用本地时区表示;
②函数参数:timer为time()函数获得;
③函数返回值:以tm结构表达的时间;

1.3 strftime()函数

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

①函数功能:年-月-日 小时:分钟:秒 格式的日期字符串转换成其它形式的字符串;
②函数参数
第一个参数→str为指向目标数组的指针,用来复制产生的C字符串;
第二个参数→maxsize为被复制到str的最大字符数;
第三个参数→format为C字符串,包含了普通字符和特殊格式说明符的任何组合。这些格式说明符由函数替换为表示 tm 中所指定时间的相对应值;
第四个参数→timeptr指向 tm 结构的指针,tm结构体详情可见ctime()函数;
③函数返回值:如果产生的 C 字符串小于 maxsize 个字符(包括空结束字符),则会返回复制到 str 中的字符总数(不包括空结束字符),否则返回零。

二、获取系统时间方法

2.1.1 time()函数

#include time_t time(time_t *timer);

time_t 是一个unsigned long类型,
①函数功能:得到当前日历时间或设置日历时间
②函数参数
timer = NULL时,为得到当前日历时间(从1970-01-01 00:00:00到现在的秒数);
timer = 时间数值时,用于设置日历时间,其返回值存储在timer中;
③函数返回值:返回当前日历时间

2.1.2 time()案例

输出时间格式:Mon Mar 20 15 : 51 : 31 2023

#include #include #include #include int printf_time(void);int main(int argc,char **argv){printf_time();//调用获取时间函数return 0;}int printf_time(void){time_t timep;//time_t 是一个适合存储日历时间类型time(&timep);char *s = ctime(&timep);//ctime()把日期和时间转换为字符串printf("date:%s",s);return 0;}

输出结果:

date:Mon Mar 20 15:51:31 2023

2.2.1 gettimeofday()函数

#include #include int gettimeofday(struct timeval *tv,struct timezone *tz);timeval结构体:struct timeval{longtv_sec; // 秒数longtv_usec; // 微秒数};timezone结构体:struct timezone{int tz_minuteswest;//格林威治时间往西方的时差int tz_dsttime;//DST 时间的修正方式}

①函数功能:把目前的时间由tv所指向的结构体返回,当地时区的信息则放到tz所指的结构中;
②函数参数
第一个参数→tv为timeval结构体;
第二个参数→tz为timezone结构体;
③函数返回值:在gettimeofday()函数中的俩个参数都可以为NULL,为NULL时对应的结构体将不返回值。成功,返回0;失败,返回-1,原因存在errno中;

2.2.2 gettimeofday()案例

输出时间格式:2023-03-20 20:38:37

#include #include #include #include int get_time(char *buff,int len);int main(int argc, const char **argv){char buff[40];get_time(buff, sizeof(buff));printf("time:%s\n", buff);return 0;}int get_time(char *buff,int len){struct timeval tv;struct tm* ptm;char time_string[40];gettimeofday(&tv, NULL);ptm = localtime (&(tv.tv_sec));strftime (time_string, sizeof(time_string), "%Y-%m-%d %H:%M:%S", ptm);//输出格式为: 2022-03-30 20:38:37snprintf (buff, len, "%s", time_string);return 0;}

输出结果:

time:2023-03-20 20:38:37