Вы могли помочь мне как к формату a struct timeval
экземпляр к человекочитаемому формату как "01.01.2010 15:35:10.0001"?
Преобразуйте tv_sec
, используя localtime
, и strftime
, затем добавьте часть tv_usec
.
Для преобразования даты и времени в строку можно использовать функцию strftime.
Вам необходимо вручную добавить микросекунды, поскольку это не в структуре struct tm
, с которой работает strftime
(). Вот фрагмент:
struct timeval tv;
time_t nowtime;
struct tm *nowtm;
char tmbuf[64], buf[64];
gettimeofday(&tv, NULL);
nowtime = tv.tv_sec;
nowtm = localtime(&nowtime);
strftime(tmbuf, sizeof tmbuf, "%Y-%m-%d %H:%M:%S", nowtm);
snprintf(buf, sizeof buf, "%s.%06ld", tmbuf, tv.tv_usec);
Обратите внимание, как мы используем явную точность 06
, чтобы получить заполненное нулями поле микросекунд. Поскольку микросекунды идут от 0 до 999 999, они всегда должны быть дополнены до 6 цифр. Мы не хотим вводить в заблуждение, например 57 микросекунд как 570 000 (сравните «1,57» с «1,000057»).