我有一个要求,我只需要在工作日的上午9点到下午5点之间运行Java程序。时区将始终为UTC。该节目应在上午9点整开始,下午5点前结束。如果它不能在下午5点之前完成,那么它应该睡眠到第二天08:59:59。如果下一天是周末,那么应该从周一开始。
文章difference in seconds between two dates using joda time?解释了如何获得两个预定义日期之间的秒数差,但我总是想计算下一个工作日上午9点和当前时间之间的差值。
我正在考虑使用Thread.sleep()来计算两个日期之间的时间差。有没有Joda Time api可以用来计算两个日期之间的时间差?
我已经尝试获取当前的纪元和第二天上午9点的纪元,计算这两个纪元之间的差值,并将该值用于Thread.sleep,但它有点混乱。
下面是我使用的伪代码
getNextDayEpoch函数包含if/else代码,用于使用Determine if date is weekday/weekend java确定是工作日还是周末
根据是工作日还是周末,我得到了相应的时值。
currentEpoch = getCurrentEpoch()
nextDayEpoch = getNextDayEpoch()
difference = nextDayEpoch - currentDayEpoch
try {
Thread.sleep(difference);
} catch (InterruptedException e) {
e.printStackTrace();
}你能建议一些更好的方法吗?
发布于 2019-08-09 22:46:58
如果您当前在项目中使用spring,可以尝试使用带cron参数的@Scheduled批注
@Scheduled(cron = "0 0 1 * * ?")
public void doThing() {
//...
}https://stackoverflow.com/questions/57432153
复制相似问题