我需要为5个用户实现一个时间窗口。根据cron表达式
同样。
我将根据用户在其操作时间窗口中运行报告。如果不是我只是忽略该用户。我正在使用'OSGI'弹簧服务器来托管它。
我需要知道某个特定时间的用户是否具有正在运行的窗口。
我看了
org.springframework.scheduling.quartz.SchedulerFactoryBean
实现这一目标。这有更好的选择吗?
请建议。
提前致谢。
答案 0 :(得分:1)
使用来自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.");
}