c语⾔获取当前时间
⾸先介绍两个函数:
(1) int gettimeofday(struct timeval*tv, struct timezone *tz)
所属头⽂件: <sys/time.h>
其参数tv是保存获取时间结果的结构体,参数tz⽤于保存时区结果:
struct timezone{
int tz_minuteswest;/*格林威治时间往西⽅的时差*/
int tz_dsttime;/*DST 时间的修正⽅式*/
};
timezone 参数若不使⽤则传⼊NULL即可。
⽽结构体timeval的定义为:
struct timeval{
long int tv_sec; // 秒数
long int tv_usec; // 微秒数
};
其返回值是从1970-1-1⽇到现在的的时间,可以精确到微妙级。
(2)struct tm *localtime_r(const time_t *timep, struct tm *result);(可重⼊)
所属头⽂件 <time.h>
其中result是保存转换时间结果的结构体
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代表⼀⽉) - 取值区间为[0,11] */
int tm_year; /* 年份,其值等于实际年份减去1900 */
int tm_wday; /* 星期 – 取值区间为[0,6],其中0代表星期天,1代表星期⼀,以此类推 */
int tm_yday; /* 从每年的1⽉1⽇开始的天数 – 取值区间为[0,365],其中0代表1⽉1⽇,1代表1⽉2⽇,以此类推 */ int tm_isdst; /* 夏令时标识符,实⾏夏令时的时候,tm_isdst为正。不实⾏夏令时的进候,tm_isdst为0;不了解情况时,tm_isdst()为负。*/
实例:
#include<sys/time.h>
#include<stdio.h>
c语言struct头文件#include<time.h>
#include<stdint.h>
int main()
{
struct timeval tv;
gettimeofday(&tv,NULL);//获取1970-1-1到现在的时间结果保存到tv中
uint64_t sec=tv.tv_sec;
uint64_t min=tv.tv_sec/60;
struct tm cur_tm;//保存转换后的时间结果
localtime_r((time_t*)&sec,&cur_tm);
char cur_time[20];
snprintf(cur_time,20,"%d-%02d-%02d %02d:%02d:%02d",_year+1900,_mon+1,
_mday,_hour,_min,cur_tm printf("current time is %s\n",cur_time);//打印当前时间
}
结果:
谢谢阅读,欢迎指出错误!!
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论