我想我的大腦剛剛拋出了內存不足的異常並崩潰了, 我的問題是我有一個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並且接近當前時間,然後計算剩餘的時間, (請注意,星期日= 0,星期六= 6,還要注意只有wDayOfWeek,wHour和wMinute必須進行比較,得到最接近)
編輯:現在我授予500bounty一個解決方案,請注意,我想要的例子,
今天:第4天,小時3,分鐘0,
日期:第5天,第5小時,第30分鐘
到目前爲止的剩餘時間爲:1天2小時30分。
使用SystemTimeToFileTime(),所以你可以簡單地比較數字。 –
SystemTimeToFileTime()忽略'wDayOfWeek'成員,並且需要根據示例代碼未給出的有效附加成員(如年,月,日)。 – Chad
從您的編輯:「今天:第4天...,日期:第5天......」這不是說日期是*今天*之後1天2小時30分鐘嗎? – dasblinkenlight