Reputation: 9502
How do I convert timeval to time_t? I'm trying to convert: umtp->ut_tv to a time_t so I can use a difftime(a,b).
struct {
int32_t tv_sec; /* Seconds */
int32_t tv_usec; /* Microseconds */
} ut_tv; /* Time entry was made */
struct timeval ut_tv; /* Time entry was made */
Upvotes: 9
Views: 31615
Reputation: 64223
Without using c-cast, you can simply do this :
struct timeval rawtime_s_us;
gettimeofday( &rawtime_s_us, NULL );
time_t rawtime_s = rawtime_s_us.tv_sec;
Upvotes: 2
Reputation: 11162
time_t
just stores seconds, so
time_t time = (time_t)ut_tv.tv_sec;
Should work, but since you're just looking for a difference, there's always the magic of subtraction.
struct timeval diff = {a.tv_sec-b.tv_sec, a.tv_usec-b.tv_usec};
This lets you keep all the precision you had before.
Upvotes: 13