如何在linux内核中编写人类可读的时间戳?我认为do_gettimeofday
会返回时代,但我不想尝试将其转换为可读时间。我只想要一个像Hour:Min:Sec:Msec
这样的格式。
感谢
答案 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时间,而不是当地时间。