c语言获取当前时间

首先介绍两个函数:

(1) int gettimeofday(struct timeval*tv, struct timezone *tz)

所属头文件:  

其参数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);(可重入)

所属头文件

其中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
#include
#include
#include

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",cur_tm.tm_year+1900,cur_tm.tm_mon+1,cur_tm.tm_mday,cur_tm.tm_hour,cur_tm.tm_min,cur_tm.tm_sec);
        printf("current time is %s\n",cur_time);//打印当前时间

}

 

结果:

谢谢阅读,欢迎指出错误!!

你可能感兴趣的:(c++)