9月5日后每天执行一次操作

时间:2014-08-22 07:02:20

标签: c++ winapi

我需要在9月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);
    }
}

我运行了这个程序并显示了消息框。但今天是8月22日,我检查了我的电脑时钟。我做错了什么?

参考SYSTEMTIME

更新:
在写完这个问题之后,我检查了wMonth和wDay的值,这些是1和22,即1月22日。 好像是一个bug。我该怎么做才能获得正确的月份?

2 个答案:

答案 0 :(得分:3)

if((time.wMonth = 9 ...需要:

if((time.wMonth == 9 ...
               ^^^^

如果您反向测试(许多C ++程序员都这样做),编译器将发出错误:

if((9 = time.wMonth ...  // error !

这是一种捕捉这种常见错字的方法。

答案 1 :(得分:0)

我认为最好使用cron管理器(Linux)或任务管理器(Windows)安排工作