Java 获取下次凌晨1点的日期
为了运行后台服务,我想安排一个每天凌晨1点运行的线程。我如何用java获得这个日期Java 获取下次凌晨1点的日期,java,date,datetime,calendar,Java,Date,Datetime,Calendar,为了运行后台服务,我想安排一个每天凌晨1点运行的线程。我如何用java获得这个日期 Calendar cal = Calendar.getInstance(); cal.set(Calendar.HOUR_OF_DAY, HOUR_OF_EXECUTION); Date date = cal.getTime(); 不起作用。你应该去 或 相应地给予FirstExecuted,你的事情就完成了,现在就开始下一次执行 下一个日期是下午1点 Calendar cal = Calendar.g
Calendar cal = Calendar.getInstance();
cal.set(Calendar.HOUR_OF_DAY, HOUR_OF_EXECUTION);
Date date = cal.getTime();
不起作用。你应该去
Calendar cal = Calendar.getInstance();
Calendar calAtOne = Calendar.getInstance();
calAtOne.set(Calendar.HOUR_OF_DAY,13);
calAtOne.set(Calendar.MINUTE,00);
calAtOne.set(Calendar.SECOND,00);
if(calAtOne.after(cal)){
return calAtOne;
}else{
cal.add(Calendar.DATE,1);
cal.set(Calendar.HOUR_OF_DAY,13);
cal.set(Calendar.MINUTE,00);
cal.set(Calendar.SECOND,00);
return cal;
}
然后减去currentMillis-(上述代码返回的nextExecDate)我正在使用计时器。我想我可以用“timer.scheduleAtFixedRate(…);”让它工作。这不可能吗?如果没有,我不想使用其他图书馆necessary@elCapitano这是可能的,但我给出的解决方案更好,所以您想知道下一步何时执行?如果是,您可以在启动计时器时获取日历实例,并检查它是否超过下午1点,而不是添加1天并将时间设置为下午1点,否则将时间设置为下午1点。目前,我将计时器设置为24小时。我的问题是,第一次执行必须在凌晨1点执行(因为由于工作负载问题,所有时段都必须在此时执行)。我只需要java.util.Date of now+x hours=凌晨1点。@elCapitano您可以使用quartz轻松配置它,然后您只需在下一个下午1点执行即可-现在谢谢!你的解决方案奏效了。我现在不能使用其他图书馆,但我会看看石英。非常感谢。
Calendar cal = Calendar.getInstance();
Calendar calAtOne = Calendar.getInstance();
calAtOne.set(Calendar.HOUR_OF_DAY,13);
calAtOne.set(Calendar.MINUTE,00);
calAtOne.set(Calendar.SECOND,00);
if(calAtOne.after(cal)){
return calAtOne;
}else{
cal.add(Calendar.DATE,1);
cal.set(Calendar.HOUR_OF_DAY,13);
cal.set(Calendar.MINUTE,00);
cal.set(Calendar.SECOND,00);
return cal;
}