【发布时间】:2012-02-12 21:30:18
【问题描述】:
如何将 timeval 转换为 time_t?我正在尝试转换: 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 */
【问题讨论】:
-
你确定微秒对你来说不重要吗?如果是这样,那么您需要编写自己的
struct timeval difftimeval(const struct timeval *t1, const struct timeval *t2);函数来返回t2 - t1。或者,如果您愿意,可以将返回类型定义为double,因此它更接近与difftime()的插件兼容。 -
顺便说一下,显示的代码不会编译;您使用两种不同的类型(作为匿名结构和
struct timeval)定义了两次变量ut_tv。 -
你从哪里得到
timeval的这个定义?tv_sec的类型应该是time_t并且不需要进行转换,只有截断。 -
@R 这来自 utmp.h,它是 Linux 的一部分。 @Jonathan,你说得对,在 utmp.h 中声明了两次,我实际上取出了一个 else 语句,所以它真的是一个或另一个。我只能使用 (time_t) utmp->ut_tv.tv.sec
标签: c