时间循环定时
请教个很菜的问题
我做个定时工具,里面有循环功能,从某个时间点开始隔设定的时间循环提示
例如从10点整开始,每隔50分钟循环提示一次,在Timer里查询
#include <DateUtils.hpp>
TDateTime oldtime;
String sTime = "10:00:00"; //从10点开始循环
int nloop = 50 * 60; //50分钟循环一次
oldtime = Now().DateString + " " + sTime;
int nsec = SecondsBetween(Now(),oldtime); //距现在多少秒
if( (nloop - nsec % nloop) == 0 )
{
//执行提示
}
//上面这代码在设定相隔30分钟以内是可以的,但超过30分钟就不行了,请教!!!!
[解决办法]
试试这样看行不行:
#include <DateUtils.hpp>
TDateTime oldtime;
String sTime = "10:00:00"; //从10点开始循环
int nloop = 50 * 60; //50分钟循环一次
bool tt=false;
void __fastcall TForm1::Timer1Timer(TObject *Sender)
{
if(tt==true){
// 执行你的语句
}
oldtime = Now().FormatString("yyyy-mm-dd") + " " + sTime;
int nsec = SecondsBetween(Now().FormatString("yyyy-mm-dd hh:nn:ss"),oldtime);
tt=true;
Timer1->Interval=(nsec-floor(nsec/nloop)*nloop)*1000;
}
[解决办法]
if( (nloop - nsec % nloop) == 0 )改为
if(nsec%nloop==0)
上面的变量写错了
[解决办法]
从某个时间到了,启动定时器
这可以用两个定时器实现。也可以用线程实现。