【发布时间】:2013-04-30 20:17:32
【问题描述】:
我有以下函数来获取从纪元到今天午夜的秒数。
long int midnight_time()
{
time_t t;
struct tm *local;
t = time(NULL);
struct tm timeinfo;
local = localtime(&t);
timeinfo.tm_year = local->tm_year;
timeinfo.tm_mon = local->tm_mon;
timeinfo.tm_mday = local->tm_mday;
timeinfo.tm_hour = 0;
timeinfo.tm_min=0;
timeinfo.tm_sec=0;
long int midnight_epoch = mktime(&timeinfo);
return midnight_epoch;
}
当我在代码中调用这个函数两次时,例如
cout<<midnight_time()<<endl;
cout<<midnight_time()<<endl;
我总是得到截然不同的结果,例如: 1367816400 1367812800
这是将近 4000 秒的差异。我希望这些数字是相同的。谁能看到我做错了什么?
【问题讨论】:
-
您可以使用
local本身来获取midnight_epoch,而不是从头开始创建tm。这样你就可以避免@jmihalicza 在他的回答中指出的问题。 -
你能在代码中展示它是如何工作的吗?也许可以在下面添加一个答案?