我的目标是确定一个项目的到期时间,以及获取(购买)的时间以及何时出售。每个项目都有一个TTL值。
我正在做以下事情:
time_t currentSellingTime;
long currentSystemTime = time(¤tSellingTime); // this gives me epoch millisec of now()
long TTL = <some_value>L;
long BuyingTime = <some_value> // this is also in epoch millsec
if(currentSystemTime > TTL+BuyingTime))
{
//throw exception
// item is expired
}
我的问题是如何总结两个纪元毫秒并将其与C ++中的另一个纪元毫秒进行比较
答案 0 :(得分:1)
time()
给出的纪元时间以秒为单位,而不是毫秒time返回当前时间值,并可以选择将当前时间设置为给定的变量作为唯一参数。这意味着
long currentSystemTime = time(&amp; currentSellingTime);
会将currentSystemTime
和currentSellingTime
设置为当前时间,这可能不是您打算做的......您可能应该这样做
long currentSystemTime = time(NULL);
或
time(¤tSellingTime);
但你使用的“双重形式”非常可疑。为了完整起见,MS Help reference for time()
答案 1 :(得分:0)
您想要使用另一个函数,如前所述,time()
返回秒。尝试:
#include <time.h>
long current_time() {
struct timespec t;
clock_gettime(CLOCK_REALTIME, &t);
return t.tv.sec * 1000l + t.tv_nsec / 1000000l;
}
您的代码应该可行。这种方法也与POSIX兼容。用法示例:
const long TTL = 100;
long start_time = current_time();
while (!(current_time() > start_time + TTL))
{
// do the stuff that can expire
}
注意:我知道while
循环中的条件可以以不同方式构造,但这样更像是“直到未过期”。