嗯 要写一个这样的功能:
运行A程序 当每天0:00的时候若此程序仍然在运行[即没被关闭] 则执行该程序里的某个函数
我打算开启的时候获取当前时间距离0:00的毫秒数
然后写个delay线程在12点时运行函数但是不知道怎么计算开启程序的时间与0:00相差多久 请大家指点一下
运行A程序 当每天0:00的时候若此程序仍然在运行[即没被关闭] 则执行该程序里的某个函数
我打算开启的时候获取当前时间距离0:00的毫秒数
然后写个delay线程在12点时运行函数但是不知道怎么计算开启程序的时间与0:00相差多久 请大家指点一下
import it.sauronsoftware.cron4j.Scheduler;// Creates a Scheduler instance.
Scheduler s = new Scheduler();
// Schedule a once-a-minute task.
s.schedule("0 0 * * *", new Runnable() {
public void run() {
System.out.println("Another minute ticked away...");
}
});
// Starts the scheduler.
s.start();
public class Test {
final static long DAY_SECONDS = 24 * 60 * 60;
public static void main(String[] args) {
System.out.println(DAY_SECONDS - (System.currentTimeMillis() / 1000) % DAY_SECONDS);
}
}
final static long DAY_SECONDS = 24 * 60 * 60;
final static long MINUS_SECONDS = 8 * 60 * 60;
public static void main(String[] args) {
long time = DAY_SECONDS - MINUS_SECONDS -
(System.currentTimeMillis() / 1000) % DAY_SECONDS;
if(time < 0)
time += DAY_SECONDS;
System.out.println(time);
}
}
由于是北京时间在东八区,所以还要减去时差MINUS_SECONDS = 8 * 60 * 60。
结果可能是负的,所以还要再处理下。
最终结果就是当前时间举例下一天0点的秒数。
calendar.set(Calendar.HOUR_OF_DAY,0);
calendar.set(Calendar.MINUTE,0);
calendar.set(Calendar.SECOND,0);
calendar.set(Calendar.MILLISECOND,0);
calendar.add(Calendar.DAY_OF_YEAR,1);
long future = calendar.getTimeInMillis();long now = System.currentTimeMillis();long delay = future - now;