2011-12-28 7 views
8

리눅스 커널에서 사람이 읽을 수있는 타임 스탬프를 어떻게 써야하나요? 나는 do_gettimeofday가 epoch를 반환한다고 생각하지만 읽을 수있는 시간으로 변환하려고하지 않으려합니다. 나는 단지 Hour:Min:Sec:Msec과 같은 형식을 원한다. 감사합니다.리눅스 커널에서 인간이 읽을 수있는 타임 스탬프

+1

do_gettimeofday가 최선의 방법입니다. 직접 포맷해야합니다. 어쨌든 정확한 사용 사례는 무엇입니까? –

답변

7

나중에 커널은 사람이 읽을 수있는 형식으로 시간을 깨기 위해 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

나는이 기능이 있다고 생각하지 않지만, 당신이 그 날을 필요로하지 않으면 아주 쉽게 할 수 있습니다.

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 시간을받습니다.

관련 문제