void setDatetime(MYSQL_BIND& bind, const Datetime& data) { reserve(bind, sizeof(MYSQL_TIME)); memset(bind.buffer, 0, sizeof(MYSQL_TIME)); MYSQL_TIME* ts = static_cast<MYSQL_TIME*>(bind.buffer); ts->year = data.getYear(); ts->month = data.getMonth(); ts->day = data.getDay(); ts->hour = data.getHour(); ts->minute = data.getMinute(); ts->second = data.getSecond(); bind.buffer_type = MYSQL_TYPE_DATE; bind.is_null = 0; }
//根据调度判断是否允许发送 bool CAlertMain::IsScheduleMatch(string strSchedule) { if(strSchedule == "") return true; bool bReturn = false; Datetime tm; int nDay; int nHour; int nMin; nDay = tm.getDayOfWeek(); nHour = tm.getHour(); nMin = tm.getMinute(); printf("%d:%d:%d ",nDay,nHour,nMin); //"Type" "绝对任务计划" "相对任务计划" 不存在"绝对任务计划"的情况, 应该在emailset.exe里屏蔽掉 OBJECT hTask = GetTask(strSchedule); //if(GetTaskValue("Type", hTask) == "相对任务计划") { //相对调度条件参数 char buf[256]; string temp1 = "Allow"; itoa(nDay, buf, 10); temp1 += buf; string temp = GetTaskValue(temp1, hTask); if(strcmp(temp.c_str(), "1") == 0) { //允许 int nTaskStartHour = 0, nTaskEndHour = 0, nTaskStartMin = 0, nTaskEndMin = 0; int nTaskStart = 0, nTaskEnd = 0, nInput = 0; //开始 temp1 = "start"; temp1 += buf; std::list<string> pTmpList; temp = GetTaskValue(temp1, hTask); CAlertMain::ParserToken(pTmpList, temp.c_str(), ":"); sscanf(pTmpList.front().c_str(), "%d", &nTaskStartHour); sscanf(pTmpList.back().c_str(), "%d", &nTaskStartMin); //结束 pTmpList.clear(); temp1 = "end"; temp1 += buf; temp = GetTaskValue(temp1, hTask); CAlertMain::ParserToken(pTmpList, temp.c_str(), ":"); sscanf(pTmpList.front().c_str(), "%d", &nTaskEndHour); sscanf(pTmpList.back().c_str(), "%d", &nTaskEndMin); //比较 nTaskStart = nTaskStartHour * 60 + nTaskStartMin; nTaskEnd = nTaskEndHour * 60 + nTaskEndMin; nInput = nHour * 60 + nMin; if(nInput >= nTaskStart && nInput <= nTaskEnd) bReturn = true; } else { //禁止返回 false; } } return bReturn; }