C ++具有给定小时和分钟的纪元以来的秒数

时间:2014-12-06 11:12:36

标签: c++ time epoch

我试图通过给定的有效小时和分钟来获取纪元(1970年1月1日)的秒数。

假设给出的时间是10,给出的分钟是30,这意味着它是10:30 AM。还假设它是在今天的日期。意思是:

2014年12月6日上午10:30:00

如何获得从纪元到上述日期的秒数?

我尝试过以下操作,但结果是-1。

time_t now = time(0);
tm *ltm = gmtime(&now);

struct tm t;
t.tm_year = 1900 + ltm->tm_year;
t.tm_mon  = 1 + ltm->tm_mon;
t.tm_mday = ltm->tm_mday;
t.tm_hour = 10;
t.tm_min  = 30;
t.tm_sec  = 0;
time_t timeSinceEpoch = mktime(&t);

timeSinceEpoch返回-1。为什么会这样?

1 个答案:

答案 0 :(得分:4)

您可以使用mktime(),如下所示

time_t t = time(NULL);
tm* timePtr = localtime(&t);//Getting current time.

struct tm t = {0};             // Initalize to all 0's
t.tm_year = timePtr->tm_year;  // This is year- 114 (1900+114=2014)
t.tm_mon = timePtr->tm_mon;    //Current Month
t.tm_mday = timePtr->tm_mday;  //Today's date
t.tm_hour = 10;                //Time you need (10)
t.tm_min = 30;                 //Minutes you need (30)
t.tm_sec = timePtr->tm_sec;    //Current second
time_t timeSinceEpoch = mktime(&t);