设计实现作业调度

时间:2012-06-07 11:45:09

标签: java scheduling

我正在开发一个需要安排的应用程序(就像微软Outlook会议重现中的那个)。我们可以每天,每周,每月和每年安排工作,并在每个时间表下有变化(例如每月的每一个星期一或每周的每个星期一等)。

它基本上应该像在Microsoft Outlook会议安排中一样工作。

我可用于实现此逻辑的任何指针,链接,建议或任何可用的api将会有很大帮助

由于

2 个答案:

答案 0 :(得分:1)

您可能需要查看Quartz

答案 1 :(得分:0)

我最近在类似的事情上工作,主要问题是找到本周的第一天,从那里找到所需的一周相对容易,另一个问题是找到下一天的第一天一个月。

以下是获取的代码

  • 本周开始(当周的星期一)
  • 下周开始(下周一)
  • 下个月的开始(下个月的第一天)

    import java.util.Calendar;
    import java.util.Date;
    
    // ... 
    
    public static long getWeekStart()
    {
        //INIT Date
        Calendar cal = Calendar.getInstance();
        cal.clear(Calendar.HOUR_OF_DAY);
        cal.clear(Calendar.MINUTE);
        cal.clear(Calendar.SECOND);
        cal.clear(Calendar.MILLISECOND);
    
        //get start of this week in milliseconds
        cal.set(Calendar.DAY_OF_WEEK, cal.getFirstDayOfWeek());
        return cal.getTime().getTime();
    }
    
    public static long getNextWeek()
    {
        //INIT Date
        Calendar cal = Calendar.getInstance();
        cal.clear(Calendar.HOUR_OF_DAY);
        cal.clear(Calendar.MINUTE);
        cal.clear(Calendar.SECOND);
        cal.clear(Calendar.MILLISECOND);
    
        //get start of this week in milliseconds
        cal.set(Calendar.DAY_OF_WEEK, cal.getFirstDayOfWeek());
    
        // start of the next week
        cal.add(Calendar.WEEK_OF_YEAR, 1);
        return cal.getTime().getTime();
    }
    
    public static long getNxtMonthStart()
    {
        Calendar cal = Calendar.getInstance();
        cal.clear(Calendar.HOUR_OF_DAY);
        cal.clear(Calendar.MINUTE);
        cal.clear(Calendar.SECOND);
        cal.clear(Calendar.MILLISECOND);
    
        // get start of the month
        cal.set(Calendar.DAY_OF_MONTH, 1);
    
        // get start of the next month
        cal.add(Calendar.MONTH, 1);
    
        return cal.getTime().getTime();
    }
    

希望这有助于获得一周的日子。