Вам необходимо вручную добавить часть микросекунды, так как struct tm
strftime
() не относится к *1001* Вот фрагмент кода:
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»).