Linux中的timeval結構體通常用來表示時間值,可以使用以下方法將其轉換為其他格式:
轉換為time_t:timeval結構體中的tv_sec字段可以直接轉換為time_t類型,表示從1970年1月1日開始的秒數。
轉換為字符串:可以使用ctime()函數將timeval結構體轉換為可讀的時間字符串。
轉換為tm結構體:可以使用gmtime()或localtime()函數將timeval結構體轉換為tm結構體,然后再進行格式化輸出。
轉換為毫秒:可以將timeval結構體中的tv_sec字段乘以1000再加上tv_usec字段除以1000,得到毫秒值。
示例代碼如下:
#include <stdio.h>
#include <sys/time.h>
int main() {
struct timeval tv;
gettimeofday(&tv, NULL);
time_t sec = tv.tv_sec;
printf("tv_sec: %ld\n", sec);
char *str = ctime(&tv.tv_sec);
printf("ctime: %s", str);
struct tm *tm = gmtime(&tv.tv_sec);
printf("gmtime: %d-%02d-%02d %02d:%02d:%02d\n",
tm->tm_year + 1900, tm->tm_mon + 1, tm->tm_mday,
tm->tm_hour, tm->tm_min, tm->tm_sec);
long long ms = (long long)tv.tv_sec * 1000 + tv.tv_usec / 1000;
printf("milliseconds: %lld\n", ms);
return 0;
}
以上代碼展示了如何將timeval結構體轉換為不同的格式,可以根據需要選擇合適的轉換方法。