使用java + spring实现时间段(Window)

时间:2012-03-23 11:21:43

标签: java spring osgi quartz-scheduler

我需要为5个用户实现一个时间窗口。根据cron表达式

  1. 第一位用户将在上午8点至上午10点开放。
  2. 第二位用户将在上午9点至下午5点开放。
  3. 同样。

    我将根据用户在其操作时间窗口中运行报告。如果不是我只是忽略该用户。我正在使用'OSGI'弹簧服务器来托管它。

    我需要知道某个特定时间的用户是否具有正在运行的窗口。

    我看了

      

    org.springframework.scheduling.quartz.SchedulerFactoryBean

    实现这一目标。这有更好的选择吗?

    请建议。

    提前致谢。

1 个答案:

答案 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.");
}