现在和现在之间的Difftime抛出1小时差异(C ++)

时间:2013-03-08 16:41:09

标签: c++

为什么现在和现在之间的差异会导致一小时的结果?不应该是0吗?

time_t diffe = difftime(now, now);
CCLOG("wow %i", localtime(&diffe)->tm_hour);

log =“wow 1”的结果

THKS

3 个答案:

答案 0 :(得分:5)

difference是值为0的双倍。

当您使用值为time_t的{​​{1}}时,这是epoch,即1970-01-01 00:00:00。当您使用localtime和时区比0提前一小时解释时,您会得到1970-01-01 01:00:00,这就是您看到的原因

GMT

“差”。

答案 1 :(得分:1)

difftime返回double(秒数),而不是time_t

另一方面,

localtime采用time_t*参数。传递double*没有多大意义。

答案 2 :(得分:0)

difftime以秒为单位返回差异(double)。另一方面,localtime使用提供的值初始化tm结构。所以我的猜测是你在GMT+1时区执行代码。要获得数小时的差异,只需打印difftime(now, now) / (60.0 * 60.0)

即可