-
2021-05-12 00:50:12
Linux获取毫秒级时间函数
Moakapspa
在软件设计中常常会用到关于时间的处理,用来计算语句、函数的执行时间,这时就须要精确到毫秒甚至是微妙的时间。设计
int gettimeofday(struct timeval *tv, struct timezone *tz);orm
int settimeofday(const struct timeval *tv, const struct timezone *tz);xml
struct timeval {get
time_t tv_sec; /* seconds */io
suseconds_t tv_usec; /* microseconds */class
};软件
struct timezone {程序
int tz_minuteswest; /* minutes west of Greenwich */
int tz_dsttime; /* type of DST correction */
};
下面是个简单的例子,用来统计程序的执行时间:
…
struct timeval t_start,t_end;
long cost_time = 0;
//get start time
gettimeofday(&t_start, NULL);
printf("Start time: %ld us", t_start.tv_usec);
//some operation
…
//get end time
gettimeofday(&t_end, NULL);
printf("End time: %ld us", t_end.tv_usec);
//calculate time slot
cost_time = t_end.tv_usec - t_start.tv_usec;
printf("Cost time: %ld us", cost_time);
…
输出:
Start time: 438061 us
End time: 459867 us
Cost time: 21806 us
更多相关内容 -
Linux获取时间的方法
2019-04-11 15:03:22统计了一下Linux C下获取时间的几种方法,如下: 0、以下代码所需头文件 # include # include # include # include # include 1、获取年月日时分秒 /* 获取年月日时分秒 */ void...统计了一下Linux C下获取时间的几种方法,如下:
0、以下代码所需头文件
#include <stdio.h> #include <stdlib.h> #include <unistd.h> #include <time.h> #include <sys/time.h>
1、获取年月日时分秒
/* 获取年月日时分秒 */ void get_time_ymdhs() { time_t t; struct tm *p; time(&t); p = gmtime(&t); printf("%d\n", 1900 + p->tm_year); /* 年, p->tm_year是从1900年作为开始点, 例如今年是2019年,p->tm_year的值就是119, 所以加上1900 */ printf("%d\n", 1 + p->tm_mon); /* 月, p->tm_mon的范围是0-11, 所以加1 */ printf("%d\n", p->tm_mday); /* 日,p->tm_mday范围是1-31 */ printf("%d\n", 8 + p->tm_hour); /* 时,获取的是世界时, 我们处于东八区,相差8个小时 */ printf("%d\n", p->tm_min); /* 分 */ printf("%d\n", p->tm_sec); /* 秒 */ printf("%d\n", p->tm_yday); /* 从1月1日开始至今的天书,范围是0~365 */ }
gmtime获取世界时的时间,即格林威治(GMT)时间,所以要对时间加上时区的时差
2、格式化输出年月日时分秒
下面的几种方式是输出格式化过的时间,目前使用到的情况比较少/* 格式化时间字符串格式为:Www Mmm dd hh:mm:ss yyyy */ void asctime_get_time() { time_t t; struct tm *p; time(&t); p = gmtime(&t); p->tm_hour += 8; /* 获取的是世界时,东八区要+8 */ printf("%s\n", asctime(p)); }
/* 格式化时间字符串格式为:Www Mmm dd hh:mm:ss yyyy */ void ctime_get_time() { time_t t; time(&t); printf("%s\n", ctime(&t)); /* 打印的是当前时区的时间 */ }
/* 格式化时间字符串格式为:Www Mmm dd hh:mm:ss yyyy */ void localtime_get_time() { time_t t; struct tm *p; time(&t); p = localtime(&t); /* 获取的是当前时区的时间 */ printf("%s\n", asctime(p)); }
3、多用于统计程序执行时间的几种时间获取方式
/* 获取微秒级(百万分之一秒)时间 */ void get_microsecond_time() { struct timeval tv; struct timezone tz; gettimeofday(&tv, &tz); /* tz一般传NULL */ printf("sec: %ld\n", tv.tv_sec); /* 秒 */ printf("usec: %ld\n", tv.tv_usec); /* 微秒 */ printf("tz_minuteswest: %d\n", tz.tz_minuteswest); /* 格林威治时间往西方的时差,一般用不上 */ printf("tz_dsttime: %d\n", tz.tz_dsttime); /* DST 时间的修正方式,一般用不上 */ }
/* 获取纳秒级(十亿分之一秒)时间 */ void get_nanosecond_time() { struct timespec ts; clock_gettime(CLOCK_REALTIME, &ts); printf("sec: %ld\n", ts.tv_sec); /* 秒 */ printf("nsec: %ld\n", ts.tv_nsec); /* 纳秒 */ }
时间单位换算如下:
#define SECOND 1 /* 1秒 */ #define MILLISECOND 1000 /* 1秒换算毫秒 */ #define MICROSECOND 1000 * 1000 /* 1秒换算微秒 */ #define NANOSECOND 1000 * 1000 * 1000 /* 1秒换算纳秒 */
-
Linux 获取系统时间
2022-03-30 20:42:56很多时候,都需要获取Linux的系统时间,每次都是在网上去抄别人的,用完之后就往了。这次做个记录,方便自己以后查阅。 直接上代码: #include <stdio.h> #include <stdlib.h> #include <sys/time...很多时候,都需要获取Linux的系统时间,每次都是在网上去抄别人的,用完之后就往了。这次做个记录,方便自己以后查阅。
直接上代码:
#include <stdio.h> #include <stdlib.h> #include <sys/time.h> #include <time.h> /* * 获取系统时间,这种方式获取得到的格式是: Wed Mar 30 20:41:21 2022 */ int printf_time(void) { time_t timep; time(&timep); char *s = ctime(&timep); printf("date:%s",s); return 0; } /* * 获取系统时间,这种方式获取得到的格式是: 2022-03-30 20:41:21.104 */ int get_time_ms(char *buff, int len) { struct timeval tv; struct tm* ptm; char time_string[40]; long milliseconds; if(buff == NULL) { printf("%s buff is NULL.\n", __func__); return -1; } 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:37 milliseconds = tv.tv_usec / 1000; snprintf (buff, len, "%s.%03ld", time_string, milliseconds); //输出格式为: 2022-03-30 20:38:37.182 return 0; } int main(int argc, const char **argv) { char buff[40]; get_time_ms(buff, sizeof(buff)); printf("time:%s\n", buff); printf_time(); return 0; }
上程序运行结果:
time:2022-03-30 20:42:21.558 date:Wed Mar 30 20:42:21 2022
-
LINUX 下C++ 获取系统时间和设置时间
2021-04-23 17:21:02LINUX 下C++ 获取系统时间和设置时间,是个类,已经测试通过,需要用管理员用户 -
linux获取系统启动时间示例详解
2021-01-20 16:06:54今天需要在应用程序获取系统的启动时间,百度了一下,通过sysinfo中的uptime可以计算出系统的启动时间。 2、sysinfo结构 sysinfo结构保持了系统启动后的信息,主要包括启动到现在的时间,可用内存空间、共享内存空间... -
Linux 获取时间函数
2018-09-14 20:18:39一、time 头文件: #include <time.h> 原型: time_t time(time_t *t) time_t的定义: typedef __darwin_time_t time_...返回值:UTC(coordinated universal time)时间1970年1月1日00时00分...一、time
头文件:
#include <time.h>
原型:
time_t time(time_t *t)
time_t的定义:
typedef __darwin_time_t time_t; typedef long __darwin_time_t;
返回值:UTC(coordinated universal time)时间1970年1月1日00时00分00秒(也称为Linux系统的Epoch时间)到当前时刻的秒数
例:1
#include <stdio.h> #include <time.h> int main () { time_t seconds; seconds = time(NULL); printf("自 1970-01-01 起的小时数 = %ld\n", seconds/3600); return(0); }
二、localtime localtime_r
头文件:
#include <time.h>
原型:
struct tm *localtime(const time_t *timep)
原型:
struct tm *localtime_r(const time_t *timep, struct tm *result);
结构体tm
struct tm { int tm_sec; /* Seconds (0-60) */ int tm_min; /* Minutes (0-59) */ int tm_hour; /* Hours (0-23) */ int tm_mday; /* Day of the month (1-31) */ int tm_mon; /* Month (0-11) */ int tm_year; /* Year - 1900 */ int tm_wday; /* Day of the week (0-6, Sunday = 0) */ int tm_yday; /* Day in the year (0-365, 1 Jan = 0) */ int tm_isdst; /* Daylight saving time */ /* 夏令时标识符,实行夏令时的时候,tm_isdst为正。不实行夏令时的进候,tm_isdst为0;不了解情况时,tm_isdst()为负。*/ };
localtime 与 localtime_r区别
localtime 不是可重入 localtime_r 可重入
例2:
#include <cstdlib> #include <iostream> #include <time.h> #include <stdio.h> int main(int argc, char *argv[]) { time_t tNow =time(NULL); time_t tEnd = tNow + 1800; //注意下面两行的区别 struct tm* ptm = localtime(&tNow); struct tm* ptmEnd = localtime(&tEnd); char szTmp[50] = {0}; strftime(szTmp,50,"%H:%M:%S",ptm); char szEnd[50] = {0}; strftime(szEnd,50,"%H:%M:%S",ptmEnd); printf("%s /n",szTmp); printf("%s /n",szEnd); return 0; }
最后出来的结果是:
21:18:39
21:18:39例3:
#include <cstdlib> #include <iostream> #include <time.h> #include <stdio.h> int main(int argc, char *argv[]) { time_t tNow =time(NULL); time_t tEnd = tNow + 1800; struct tm ptm = { 0 }; struct tm ptmEnd = { 0 }; localtime_r(&tNow, &ptm); localtime_r(&tEnd, &ptmEnd); char szTmp[50] = {0}; strftime(szTmp,50,"%H:%M:%S",&ptm); char szEnd[50] = {0}; strftime(szEnd,50,"%H:%M:%S",&ptmEnd); printf("%s /n",szTmp); printf("%s /n",szEnd); return 0; }
最后出来的结果是: 10:29:06 10:59:06
三、gettimeofday
头文件:
#include <sys/time.h>
原型:
int gettimeofday(struct timeval*tv, struct timezone *tz)
tv:是保存获取时间结果的结构体
struct timeval{ long int tv_sec; // 秒数 long int tv_usec; // 微秒数 }
tz:用于保存时区结果
struct timezone{ int tz_minuteswest;/*格林威治时间往西方的时差*/ int tz_dsttime;/*DST 时间的修正方式*/ }
返回值:成功返回0,失败返回-1,错误代码保存于errno中
四、mktime
头文件:
#include <time.h>
原型:
time_t mktime(struct tm *tm)
返回值:1970年1月1日以来持续时间的秒数,发生错误时返回-1。
例4:
#include<stdio.h> #include<time.h> int main(void) { time_t timep; struct tm* p; time(&timep); printf("time():%d\n",timep); p=localtime(&timep); timep=mktime(p); printf("time()->localtime()->mktime():%d\n",timep); return 0; }
-
linux系统时间获取方式
2021-01-17 16:08:18Linux 操作系统计算系统时间:主要函数:time localtime gmtime asctime ctime mktimedifftime strftime gmstrftime1.time()函数原型:time_t time(time_t * timer)功能:返回一个time_t类型的数据,表示从CUT时间1970... -
linux 获取系统时间
2021-02-20 15:00:32一、查看和修改Linux的时区 \1. 查看当前时区 命令 : "date -R" \2. 修改设置Linux服务器时区 方法 A 命令 : "tzselect" 方法 B 仅限于RedHat Linux 和 CentOS 命令 : "timeconfig"... -
Linux 获取时间的方法
2017-08-31 20:02:34时间的头文件 #include 关于时间的类型: time_t long 型,表示从1970年1月1日到现在经过的秒数。 struct tm { int tm_sec; /* 秒 – 取值区间为[0,59] */ int tm_min; /* 分 - 取值区间为[0,59] */ ... -
linux获取时间函数及计算时间差
2014-12-10 18:20:46参考: ... 第一章 获取时间函数 1. char * asctime(const struct tm * timeptr); 函数说明 asctime()将参数timeptr所指的tm结构中的信息转换成真实世界所使用的时间日期表示方法,然 -
Linux C获取当前时间(精确到微秒)
2021-11-11 11:25:51获取当前的时间的秒数和微秒数本方法需要用到gettimeofday()函数,该函数需要引入的头文件是 sys/time.h。 // sys/time.h struct timeval { long tv_sec; //秒 long tv_usec; //微秒 }; struct timezone { ... -
Linux内核中获取当前时间
2021-05-13 11:12:08它是非常不可能一个驱动会需要知道墙上时钟时间, 以月, 天, 和小时来表达的; 这个信息常常只对用户程序需要, 例如 cron和 syslogd. 处理真实世界的时间常常最好留给用户空间, 那里的 C 库提供了更好的支持; 另外,... -
Linux命令获取以毫秒为单位的时间
2021-05-12 10:25:11其他的答案很可能在...在Ubuntu这个工作到输出的时间以秒为小数,以微秒(包括尾随新行) sudo apt-get install adjtimex adjtimex -p | awk '/raw time:/ { print $6 }' 我不会做这在Ubuntu虽然。我会用date +%s%N -
[Linux] Linux获取时间戳
2021-12-08 16:20:03DEMO: #include<iostream> #include <stdlib.h> #include <stdio.h> #include <sys/time.h> #include <unistd.h> int main(){ struct timeval tv; gettimeofday(&... pri -
C语言获取Linux系统当前时间(精确到毫秒)
2021-06-20 04:05:30在日常工作中,有时候我们需要对时间做处理,这个时候就要能获取到系统当前时间 而且,关键时候要能精确到毫秒级别!不然精度不够!... } 以上就是C语言写的获取Linux系统当前时间!(精确到毫秒) -
linux获取系统时间戳
2020-11-30 11:41:20linux获取系统时间戳 #include<iostream> #include <stdlib.h> #include <stdio.h> #include <sys/time.h> #include <unistd.h> int main(){ struct timeval tv; gettimeofday(&... -
Linux获取系统当前时间(精确到毫秒)
2020-03-28 23:41:52原文地址::... 相关文章 1、Linux获取系统时间,精确到毫秒----https://blog.csdn.net/tajon1226/article/details/103201935 2、Linux获取系统当前时间(精确到毫秒)----https://www.cnbl... -
linux C用户态与内核态获取系统时间
2021-12-28 09:30:15目前主要是使用获取从1970年1月1日之后的秒数。 用户态: struct timeval time = { .tv_sec=0, /*单位:s*/ .tv_nsec=0 /*单位:ns*/ }; unsigned long long int sec,usec = 0; clock_gettime(0, &... -
Linux下获取ms的时间
2019-04-03 20:02:16void getCurrentTime(tm *iCurrentTime,long &iMilliSecond) { timeval tv; time_t timep; gettimeofday(&tv, NULL);//获取当下精确的s和us的时间 time(&timep);//获取从1... -
Linux 获取毫秒级时间戳
2021-04-26 23:59:35Linux 获取毫秒级时间戳 在Linux中获取ms级别的时间戳,需要结合gettimeofday()以及localtime()函数。如下所示: #include <time.h> #include <sys/time.h> /* 日志时间戳,精确到毫秒 */ char* get_... -
linux kernel 获取时间函数api
2021-03-07 16:13:56最近在学习内核获取时间api函数,如下 内核态常用获取纳秒的函数。u64是unsigned long long类型的数据类型,打印用%llu。 u64 ktime_get_ns(void) u64 ktime_get_real_ns(void) u64 ktime_get_raw_ns(void) ... -
linux c 获得当前时间精确到毫秒
2022-03-11 14:45:57#include <sys/time.h> #include <stdio.h> #include <unistd.h> #include<iostream> using namespace std;...static string GetLocalTimeWithMs(void) ... int milli = curTime. -
Linux 获取时间差精确到ms
2015-12-08 13:41:23#! /bin/bash #filename: test.sh # arg1=start, arg2=end, format: %s.%N function getTiming() { ...# for debug..... time=$(( ( 10#$end_s - 10#$start_s ) * 1000 + ( 10...echo "时间差:${timediff}" -
Linux下读取RTC时间
2019-05-05 15:31:24可以在Linux系统下读取RTC芯片的内部时间,同时实现了读取系统内部自身时间的功能。亲测在Ubuntu下可用! -
Linux系统shell命令date获取时间精确到毫秒
2022-04-20 12:07:45截取时间从左往右数第23位,以下是截取到第三位毫秒 date +%Y-%m-%d’ '%H:%M:%S.%N | cut -b 1-23 -
linux 获取当前时间,精确到毫秒
2018-06-07 17:27:32linux 下获取当前系统时间,代码如下:void sysTime(void) { struct timeval tv; struct timezone tz; struct tm *t; gettimeofday(&tv, &tz); t = localtime(&tv.tv_sec); printf... -
linux在shell中获取时间
2021-05-15 07:41:26获得当天的日期date +%Y-%m-%d输出: 2011-07-28将当前日期赋值给DATE变量DATE=$(date +%Y%m%d)有时候我们需要使用今天之前或者往后的日期,这时可以使用date的 -d参数获取明天的日期date -d next-day +%Y%m%d获取... -
C++ linux获取系统时间
2017-06-28 21:13:15C++ linux获取系统时间 -
linux获取当前时间小总结
2017-04-05 15:11:50// 获取当前时间 返回1970年0点到现在的秒数 ptr=localtime(&tim); // ptr结构体是time.h中定义的分别用于存储时间各个量的 //下面两种方式以本地字符串的方式打印 printf("%s",asctime(ptr)); printf("%s",...