0

My goal is to determine expiry of an item to when it was acquired(bought) and when it is sold.There is a TTL value associated with each of the item.

I am doing following :

time_t currentSellingTime;
long currentSystemTime = time(&currentSellingTime); // 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
} 

My question is how to sum two epoch millisec and compare it with another epoch millsec in C++

4

2 回答 2

1

关于如何time()工作可能存在一些误解:

  1. 由 给出的纪元时间time()以秒表示,而不是毫秒
  2. time 返回当前时间值,并且可以选择在作为其唯一参数给出的变量中设置当前时间。这意味着

    长 currentSystemTime = time(¤tSellingTime);

将两者都设置currentSystemTimecurrentSellingTime当前时间,这可能不是你打算做的......你可能应该做

long currentSystemTime = time(NULL);

或者

time(&currentSellingTime);

但是您使用的“双重形式”非常可疑。为了完整起见,时间()的MS帮助参考

于 2013-06-25T10:42:06.850 回答
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循环中的条件可以以不同的方式构造,但这种方式更像是“直到没有过期”。

于 2013-06-25T10:53:37.943 回答