java定时器执行时间问题

java定时器执行时间问题
这个方法schedule(TimerTask task, Date firstTime, long period),firsttime是首次执行的时间,现在的问题是,如果我把这个时间设置在当前时间之后,没有问题,程序会在我想要的时间执行,但如果把这个时间设置在当前时间之前,也就是说当前的时间已经超过了,那么当我项目启动时就会执行,以后就是按period参数设置的间隔执行,现在我想把它设置成每天20:00执行,不管应用什么时候启动,他都会在每天20:00执行,而不会马上执行,要怎么弄?
写个Demo,你要的应该是丛蚂这个吧。

//获得当天的日期
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd ");
Date date = new Date();
//定义开始时间字符串
String timeStr = "08:00:00";
timeStr = sdf.format(date)+timeStr;
//获得当天的指定时间的date对象
sdf = new SimpleDateFormat("yyyy-MM-dd hh:mm:ss");
date = sdf.parse(timeStr);

//判断今虚郑迅天的执行时间是否已经过去,如果过差此去则改为明天
if(date.getTime() date = new Date(date.getTime()+24*60*60*1000);
}

TimerTask task = new TimerTask(){
@Override
public void run() {
//your task
}
};

Timer timer = new Timer();
timer.schedule(task, date, 24*60*60*1000);
写个Demo,你要的应该是这个吧。
//获得当天的日期
SimpleDateFormatsdf=newSimpleDateFormat("yyyy-MM-dd");
Datedate=newDate();
//定义开始时仔蚂缺间字符串
StringtimeStr="08:00:00";
timeStr=sdf.format(date)+timeStr;
//获得当天的指定时念辩间的date对象
sdf=newSimpleDateFormat("yyyy-MM-ddhh:mm:ss");
date=sdf.parse(timeStr);
//判断今天的执行时间是否已物此经过去,如果过去则改为明天
if(date.getTime()date=newDate(date.getTime()+24*60*60*1000);
}
TimerTasktask=newTimerTask(){
@Override
publicvoidrun(){
//yourtask
}
};
Timertimer=newTimer();
timer.schedule(task,date,24*60*60*1000);
很简单,由于你没分,我就简单说下。

做个线程,在线卖或程里面写个方法,时间频册配腊率由你自己定。每2秒执行一次也行。
里面也个 time == 20:00的时候 执行里面的方法。里面的方法 则调用你的schedule即可。 这州滑个time是当前时间 System.currentTime();
没schedule这方法的源码,谁能知道怎么弄啊。
只能是在外边判断下firstTime是否改闹在当前时间之前。
是的核段罩话把firstTime做个处燃雀理,再调用schedule。
← 上一篇: 下一篇: →