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

C++ Number of Secs Since Epoch with given Hour and Minute

本文关键字:分钟 小时 纪元 C++      更新时间:2023-10-16

我正在尝试从纪元(1970 年 1 月 1 日)中获取具有给定有效小时和分钟的秒数。

假设给定的小时是 10,

给定的分钟是 30,这意味着它是上午 10:30。也假设它是在今天的日期。意思是:

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);

时间自大纪元返回 -1。为什么会这样?

你可以像下面这样使用 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);