我期望以下方法返回到當前日期之後的特定時間內剩餘的秒數。例如如果當前時間是「19:00」,則GetRemainedSeconds("19:01")
應該返回60,表示在給定時間之前剩餘60秒。調用GetRemainedSeconds("18:59")
應返回-60。問題是下面的函數顯示隨機行爲。有時它會返回正確的值,有時它不會(即使在同一臺機器上運行)。這段代碼有什麼問題?如何獲得剩餘的秒數,直到指定的時間
int GetRemainedSeconds (const std::string &timeString, bool &isValid)
{
struct tm when;
char* p;
p = strptime (timeString.c_str(), "%H:%M", &when);
if (p == NULL || *p != '\0')
{
std::cout << "Invalid 24h time format" << std::endl;
isValid = false;
return 0;
}
struct tm now;
isValid = true;
time_t nowEpoch = time (0); // current epoch time
struct tm tmpTime;
now = *localtime_r (&nowEpoch, &tmpTime);
when.tm_year = now.tm_year;
when.tm_mon = now.tm_mon;
when.tm_mday = now.tm_mday;
when.tm_zone = now.tm_zone;
when.tm_isdst = now.tm_isdst;
time_t whenEpoch = mktime (&when);
return (whenEpoch - nowEpoch);
}
你是對的,這是一個錯字。 – Meysam 2013-03-12 14:11:37