我需要根据cron表达式实现5个用户的时间窗口
- 第一个用户的工作时间为上午 8 点至上午 10 点。
- 第二个用户的工作时间为上午 9 点至下午 5 点。
同样。
我将根据用户处于其操作时间窗口内的情况运行报告。如果不是,我就忽略该用户。我正在使用“OSGI”spring 服务器来托管它。
我需要知道在特定时间谁是拥有运行窗口的用户。
我看了
org.springframework.scheduling.quartz.SchedulerFactoryBean
为了实现这个目标。有没有更好的选择?
请指教。
提前致谢。
最佳答案
使用quartz Framework中的org.quartz.CronExpression
,它有一个方法:getNextValidTimeAfter(Date date)
,返回给定数据时间之后的下一个/数据时间。
因此解决方案可能如下所示:
Date now = new Date();
Date earlyesPossibleLogin = now - maxLoginDuration //This is psydo code, I can subtact something from a date
CronExpression cron = new CronExpression("....");
Date allowedLoginSinceEarlyestLogin = cron.getNextValidTimeAfter(earlyesPossibleLogin);
if(allowedLoginSinceEarlyestLogin > now) {
throw new LoginDeniedException("you are out of your window.");
}
关于java - 使用java + spring实现时间段(Window),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9838339/