我试图通过给定的有效小时和分钟来获取纪元(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。为什么会这样?
答案 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);