选择当月的工作日进行重复能力(例如,周一,周二,周二)

时间:2017-01-31 11:27:36

标签: java android spring date spring-boot

我有一个弹簧启动后端和一个Android应用程序。

我需要根据重复能力创建一个任务,这样如果我选择第一个星期一或第二个星期三直到重复结束日期,那么应该相应地创建任务。

例如:如果我选择第一个星期一,开始日期是今天,即1月31日,重复结束日期是3月23日,应分别为2月和3月的第一个星期一创建两个任务。

关于我如何实现这一点的任何想法以及来自android应用程序请求的参数是什么。

以下是我创建任务的代码。

public void saveTask(Task task) {

        RepeatInterval repeatInterval = repeatIntervalRepository.findOne(task.getRepeatInterval().getId()); 
        task.setDateCreated(new Date());
        Date iterationDueDate = task.getRepetitionEndDate();
        Date endDate = task.getEndDate();
        if (repeatInterval.getRepeatInterval().equals("none")) {
            task.setDateCreated(new Date());
            taskRepository.save(task);

        }
        else {
            while (iterationDueDate.before(endDate)) {

                Task newTask = new Task();
                newTask.setPriority(task.getPriority());
                newTask.setTaskState(task.getTaskState());
                newTask.setDescription(task.getDescription());
                newTask.setSystemUser(task.getSystemUser());
                newTask.setName(task.getName());
                newTask.setEndDate(task.getEndDate());
                newTask.setChecklist(task.getChecklist());
                newTask.setRepetitionEndDate(task.getRepetitionEndDate());
                newTask.setDateCreated(new Date());
                newTask.setProject(task.getProject());
                newTask.setRepeatInterval(task.getRepeatInterval());
                taskRepository.save(newTask);
                newTask.setRepetitionEndDate(updateDueDate(iterationDueDate, repeatInterval.getRepeatInterval()));
                iterationDueDate = newTask.getRepetitionEndDate();
            }
        }
    }

    private Date updateDueDate(Date previousDate, String repeatInterval) {

        Date newDate = null;
        Calendar cal = Calendar.getInstance();
        cal.setTime(previousDate);

        if (repeatInterval.equalsIgnoreCase("hourly")) {
            cal.add(Calendar.HOUR, 1);
        } else if (repeatInterval.equalsIgnoreCase("daily")) {
            cal.add(Calendar.DAY_OF_MONTH, 1);
        } else if (repeatInterval.equalsIgnoreCase("weekly")) {
            cal.add(Calendar.DAY_OF_MONTH, 7);
        } else if (repeatInterval.equalsIgnoreCase("monthly")) {
            cal.add(Calendar.MONTH, 1);
        } else if (repeatInterval.equalsIgnoreCase("yearly")) {
            cal.add(Calendar.YEAR, 1);
        }
        return cal.getTime();
    }

任何帮助将不胜感激。

1 个答案:

答案 0 :(得分:0)

您可以使用Joda-Time作为Java 8中的新日期时间库添加

https://github.com/dlew/joda-time-android