简体   繁体   English

将timeval转换为time_t

[英]Convert timeval to time_t

How do I convert timeval to time_t? 如何将timeval转换为time_t? I'm trying to convert: umtp->ut_tv to a time_t so I can use a difftime(a,b). 我正在尝试将:umtp-> ut_tv转换为time_t,以便我可以使用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 */

time_t just stores seconds, so time_t只存储秒数,所以

 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. 这使您可以保持以前的所有精度。

Without using c-cast, you can simply do this : 不使用c-cast,您可以简单地执行此操作:

struct timeval rawtime_s_us;
gettimeofday( &rawtime_s_us, NULL );
time_t rawtime_s = rawtime_s_us.tv_sec;

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM