удобочитаемая отметка времени в ядре Linux - PullRequest
9 голосов
/ 28 декабря 2011

Как я могу написать удобочитаемую временную метку в ядре Linux? Я думаю, do_gettimeofday возвращает эпоху, но я не хочу пытаться преобразовать его в удобочитаемое время. Я просто хочу формат как Hour:Min:Sec:Msec. Спасибо

Ответы [ 2 ]

8 голосов
/ 28 декабря 2011

Более поздние ядра имеют функцию time_to_tm, чтобы разбить время эпохи на удобочитаемый формат.

Вот пример:

struct timeval t;
struct tm broken;
do_gettimeofday(&t);
time_to_tm(t.tv_sec, 0, &broken);
printk("%d:%d:%d:%ld\n", broken.tm_hour, broken.tm_min, 
                         broken.tm_sec, t.tv_usec);

Опять же, это доступно только в более поздних ядрах.Второй параметр time_to_tm - это смещение времени эпохи.В моем местном времени 0, я не знаю, какой из них вы должны использовать.

1 голос
/ 28 декабря 2011

Хотя я не думаю, что есть функция для этого, вы можете сделать это довольно легко, если вам не нужен день.

struct timeval now;
unsinged int temp, second, minute, hour;
do_gettimeofday(&now);
temp = now.tv_sec;
second = temp%60;
temp /= 60;
minute = temp%60;
temp /= 60;
hour = temp%24;
printf("%02d:%02d:%02d:%06d\n", hour, minute, second, now.tv_usec);

Обратите внимание, что вы получаете время по Гринвичу, а неместное время.

...