1. 基本说明
/* linux库函数 gettimeofday
1. 头文件#include <sys/time.h>
2. 函数形式int gettimeofday(struct timeval *tv, struct timezone *tz);
3. 返回值Returns 0 on success, or –1 on error
4. 参数tv:虽然tv_usec字段提供微秒级精度,但它返回的值的精度取决于架构相关的实现。在现代x86-32系统上,gettimeofday()确实提供了微秒级的精度。tz:gettimeofday()的tz参数是一个历史产物。在较旧的UNIX实现中,它用于检索系统的时区信息。该参数现已过时,应始终指定为NULL。
5. 结构体
struct timeval {time_t tv_sec; // Seconds since 00:00:00, 1 Jan 1900suseconds_t tv_usec; // Additional microseconds (long int)
};*//* linux库函数 localtime
1. 头文件#include <time.h>
2. 函数形式struct tm *localtime(const time_t *timep);
3. 返回值成功:Both return a pointer to a statically allocated broken-downtime structure on success, 失败: NULL on error
4. 参数timep: Seconds since 00:00:00, 1 Jan 1900
5. 结构体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 since 1900 int tm_wday; // Day of the week (Sunday = 0)int tm_yday; // Day in the year (0-365; 1 Jan = 0)int tm_isdst; // Daylight saving time flag> 0: DST is in effect;= 0: DST is not effect;< 0: DST information not available /
};*/
2. 代码demo
#include <sys/time.h>
#include <iostream>/* linux库函数 gettimeofday
1. 头文件#include <sys/time.h>
2. 函数形式int gettimeofday(struct timeval *tv, struct timezone *tz);
3. 返回值Returns 0 on success, or –1 on error
4. 参数tv:虽然tv_usec字段提供微秒级精度,但它返回的值的精度取决于架构相关的实现。在现代x86-32系统上,gettimeofday()确实提供了微秒级的精度。tz:gettimeofday()的tz参数是一个历史产物。在较旧的UNIX实现中,它用于检索系统的时区信息。该参数现已过时,应始终指定为NULL。
5. 结构体
struct timeval {time_t tv_sec; // Seconds since 00:00:00, 1 Jan 1900suseconds_t tv_usec; // Additional microseconds (long int)
};*//* linux库函数 localtime
1. 头文件#include <time.h>
2. 函数形式struct tm *localtime(const time_t *timep);
3. 返回值成功:Both return a pointer to a statically allocated broken-downtime structure on success, 失败: NULL on error
4. 参数timep: Seconds since 00:00:00, 1 Jan 1900
5. 结构体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 since 1900 int tm_wday; // Day of the week (Sunday = 0)int tm_yday; // Day in the year (0-365; 1 Jan = 0)int tm_isdst; // Daylight saving time flag> 0: DST is in effect;= 0: DST is not effect;< 0: DST information not available /
};*/using namespace std;int main(int argn, char* argv[])
{cout << "-------hello gettimeofday()----------" << endl;/* Parameters init */bool process_control = false;struct timeval time_val = {0, 0};/* get time from kernal*/int gettimeofday_res = gettimeofday(&time_val, nullptr);if(0 == gettimeofday_res){ process_control = true; // can do next actioncout << "> Call gettimeofday successful!" << endl;cout << "time_val.tv_sec:" << time_val.tv_sec << endl;cout << "time_val.tv_usec:" << time_val.tv_usec << endl;}else{ process_control = false; // can not do next actioncout << "> Call gettimeofday fail!" << endl;}/* Store time in struct tm format */if(true == process_control){struct tm *p_localtime_res = localtime(&time_val.tv_sec);/* Set localtime result to tm_val */if(nullptr != p_localtime_res){cout << "> Convert time_t to tm formart successful" << endl;struct tm tm_val = *p_localtime_res;cout << "year: " << tm_val.tm_year + 1900 << endl;cout << "month: " << tm_val.tm_mon << endl;cout << "day: " << tm_val.tm_mday << endl;cout << "h: " << tm_val.tm_hour << endl;cout << "min: " << tm_val.tm_min << endl;cout << "sec: " << tm_val.tm_sec << endl;}else{cout << "> Convert time_t to tm formart fail" << endl;}}return 0;
}
3. Makefile
TARGET := app
#src file
SRC := gettimeofday_demo.cppall:$(TARGET)@echo "make successfull"
$(TARGET): $(SRC)@echo $(SRC)g++ -std=c++11 $^ -I. -o $@clean:rm $(TARGET).PHONY:all,clean
4. 结果
xuehy@ubuntu:~/code/lib_study/lib_linux/05_time$ ./app
-------hello gettimeofday()----------
> Call gettimeofday successful!
time_val.tv_sec:1719135524
time_val.tv_usec:896568
> Convert time_t to tm formart successful
year: 2024
month: 5
day: 23
h: 18
min: 38
sec: 44