gpt4 book ai didi

c++ - 如何获取指定时间之前的剩余秒数

转载 作者:行者123 更新时间:2023-11-28 03:21:13 25 4
gpt4 key购买 nike

我希望下面的方法返回当前一天内到 future 特定时间为止剩余的秒数。例如,如果当前时间是“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 );
}

最佳答案

您需要将 when.tm_sec 设置为某个值(可能为零)。它包含上次调用堆栈中碰巧出现的任何垃圾,这不是您想要的。

是的,您还应该将 when.tm_isdst 设置为有意义的内容。

关于c++ - 如何获取指定时间之前的剩余秒数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15362769/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com