Мне нужно выполнить действие каждый день после 5 сентября. Я написал эту программу
#include <windows.h>
int main()
{
SYSTEMTIME time;
GetLocalTime(&time);
if((time.wMonth = 9 && time.wDay >= 6) || time.wMonth > 9)
{
//perform action
MessageBox(GetForegroundWindow(), "Action performed. Month is " + std::to_string((long long)wMonth), "Alarm!", MB_OK | MB_SYSTEMMODAL);
}
}
Я запустил эту программу, и отобразится окно сообщения. Но сегодня 22 августа я проверил свои компьютерные часы. Что я делаю не так?
Ссылка SYSTEMTIME
Обновить:
После написания этого вопроса я проверил значения wMonth и wDay, и это 1 и 22, то есть 22 января. Кажется, это ошибка. Что мне делать, чтобы получить правильный месяц?
if((time.wMonth = 9...
должно быть:
if((time.wMonth == 9 ...
^^^^
Если вы отмените тест (и многие программисты C++), компилятор испустит ошибку:
if((9 = time.wMonth ... // error !
Это способ уловить эту частую опечатку.
Я считаю, что лучше использовать диспетчер cron (Linux) или диспетчер задач (Windows) для планирования вашей работы