Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/319.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 获取下次凌晨1点的日期_Java_Date_Datetime_Calendar - Fatal编程技术网

Java 获取下次凌晨1点的日期

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

为了运行后台服务,我想安排一个每天凌晨1点运行的线程。我如何用java获得这个日期

Calendar cal = Calendar.getInstance();
cal.set(Calendar.HOUR_OF_DAY, HOUR_OF_EXECUTION);
Date date = cal.getTime();
不起作用。

你应该去

相应地给予FirstExecuted,你的事情就完成了,现在就开始下一次执行

下一个日期是下午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;
}

然后减去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;
}