在C ++中以毫秒为单位在Timestamp上应用公式总是给我0?

时间:2013-10-24 20:29:23

标签: c++ timestamp uint64

我在下面有一个方法接受oldTimestamp作为输入参数uint64_t ...现在我需要在上面oldTimestamp上应用一个公式,每当我申请时公式,我总是将0作为start值。

并且我尝试以current timestamp数据类型(不确定这是否是正确的数据类型)的相同方法以及每当我在{上再次应用相同的公式时 - 以毫秒为单位获取long int {1}},我总是将currentTimestamp值视为end ......

以下是我的方法 -

0

我在这里做错了吗?

可能是,我对currentTimestamp和oldTimestamp使用了错误的数据类型,我不应该void getRecord(uint64_t oldTimestamp) { int start = (oldTimestamp / (60 * 60 * 1000 * 24)) % 14; cout<<"START: " << start <<endl; // this always print out as 0..? struct timeval tp; gettimeofday(&tp, NULL); long int currentTimestamp = tp.tv_sec * 1000 + tp.tv_usec / 1000; //get current timestamp in milliseconds int end = (currentTimestamp / (60 * 60 * 1000 * 24)) % 14; cout<<"END: " << end <<endl; // this always print out as 0 as well..? } 使用intstart

更新: -

这样的事情会好吗?

end

2 个答案:

答案 0 :(得分:1)

void getRecord(uint64_t oldTimestamp) { // you are using uint64_t here

int start = (oldTimestamp / (60 * 60 * 1000 * 24))  % 14; // you are using int here

您可能遇到溢出问题,即调用未定义的行为。

您需要使用uint64_t作为start类型。您的currentTimestampend变量也是如此。

答案 1 :(得分:0)

问题是你使用int来开始和结束。