【发布时间】:2012-11-05 21:17:43
【问题描述】:
我猜我的大脑刚刚抛出了一个内存不足异常并崩溃了,
我的问题是我有一个 SYSTEMTIME 大小为 3 的类成员数组,它是用户定义的(从 .lua 读取)
SYSTEMTIME m_MatchTime[3];
然后从文件中这样读取:
m_MatchTime[0].wDayOfWeek = static_cast<WORD>( m_Lua.GetGlobalNumber( "FirstDay" ) );
m_MatchTime[0].wHour = static_cast<WORD>( m_Lua.GetGlobalNumber( "FirstHour" ) );
m_MatchTime[0].wMinute = static_cast<WORD>( m_Lua.GetGlobalNumber( "FirstMinute" ) );
m_MatchTime[1].wDayOfWeek = static_cast<WORD>( m_Lua.GetGlobalNumber( "SecondDay" ) );
m_MatchTime[1].wHour = static_cast<WORD>( m_Lua.GetGlobalNumber( "SecondHour" ) );
m_MatchTime[1].wMinute = static_cast<WORD>( m_Lua.GetGlobalNumber( "SecondMinute" ) );
m_MatchTime[2].wDayOfWeek = static_cast<WORD>( m_Lua.GetGlobalNumber( "ThirdDay" ) );
m_MatchTime[2].wHour = static_cast<WORD>( m_Lua.GetGlobalNumber( "ThirdHour" ) );
m_MatchTime[2].wMinute = static_cast<WORD>( m_Lua.GetGlobalNumber( "ThirdMinute" ) );
现在我有一个方法:
SYSTEMTIME cTime;
GetLocalTime( &cTime );
我必须从三个用户定义的时间中计算出哪个是 BEFORE 和更接近当前时间,然后计算它的剩余时间, (请注意,Sunday = 0,Saturday = 6,还要注意只有 wDayOfWeek、wHour 和 wMinute 必须进行比较才能最接近)
编辑:现在我奖励 500bounty 以获得解决方案,请注意我想要的示例,
今天:第 4 天,第 3 小时,第 0 分钟,
日期:第 5 天,第 5 小时,第 30 分钟
距离日期的剩余时间为:1 天 2 小时 30 分钟。
【问题讨论】:
-
使用 SystemTimeToFileTime() 这样您就可以简单地比较数字。
-
SystemTimeToFileTime() 会忽略
wDayOfWeek成员,并需要根据示例代码未给出的有效附加成员(如年、月、日)。 -
从您的编辑中:“今天:第 4 天...,日期:第 5 天...”这不意味着日期比今天 晚 1 天2小时30分钟?
-
您能否解释一下“BEFORE and close”的含义?首先,从接受的答案看来,您正在寻找当天是“之前”三天中的一天,而不是相反。由于您只给出一周中的某一天而没有给出一年中的某一天,因此任何事情都可以被解释为两天——一个在当前日期之前,一个在它之后。例如,如果今天是星期五,日期是星期四,我可以说这一天表示下一周的星期四。这种解释正确吗?
标签: c++ time systemtime