Linux内核中的人类可读时间戳

时间:2011-12-28 09:06:52

标签: linux-kernel kernel kernel-module

如何在linux内核中编写人类可读的时间戳?我认为do_gettimeofday会返回时代,但我不想尝试将其转换为可读时间。我只想要一个像Hour:Min:Sec:Msec这样的格式。 感谢

2 个答案:

答案 0 :(得分:8)

后来的内核有一个函数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 :(得分:1)

虽然我认为没有这方面的功能,但如果你不需要这一天,你可以很容易地做到这一点。

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);

请注意,您获得的是GMT时间,而不是当地时间。