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

标签 java spring osgi quartz-scheduler

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

  1. 第一个用户的工作时间为上午 8 点至上午 10 点。
  2. 第二个用户的工作时间为上午 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/

相关文章:

java - 设置某个配置文件时不加载 Spring bean

java - Camel - 捕获全局 onException 中抛出的异常

java - 无法在 Apache ServiceMix 中启动 OSGI bundle

java - 如何将 log4j 添加到使用 OSGI bundle 的 Web 应用程序

java - 无法通过浏览器访问 Controller

java - 删除 "final"关键字会影响二进制兼容性吗?

JavaFX 应用程序线程 - 使用 Gluon Ignite 依赖注入(inject)时

java - java mail api PasswordAuthentication 方法中出现错误

java - 在 Tomcat 上部署时,Spring Boot HATEOAS 链接错误

java - 如何在代码中执行osgi命令