12
votes

Logique d'événements récurrents

Je travaille sur une application de type calendrier Groovy / Java permettant à l'utilisateur de saisir des événements avec une date de début et une récurrence facultative. Si c'est un événement récurrent, il peut récupérer:

  • mensuel à une date du mois qui correspond à la date de début li>
  • hebdomadaire par jour de la semaine qui correspond à la date de début li>
  • toutes les 2 semaines le jour de la semaine qui correspond à la date de début li>
  • etc. li> ul>

    J'ai initialement planifié lors de l'utilisation de l'API de Google Calendar pour faire toute la logique de récurrence, mais elle s'est révélée être un énorme pita, pour des raisons, je vais discuter davantage si quelqu'un se soucie. P>

    Alors maintenant, j'ai décidé de rouler ma propre solution. Compte tenu d'une date, je tiens à déterminer si un événement récurrent survient à cette date. Ma logique (en pseudocode) sera la suivante: P>

    public boolean occursOnDate(def date, def event) {
    
      def firstDate = event.startDate
    
      if (firstDate > date) {
        return false;
    
      } else if (event.isWeekly()) {
        return event.dayOfWeek() == date.dayOfWeek()
    
      } else if (event.isMonthly()) {
        return event.dayOfMonth() == date.dayOfMonth()
    
      } else {
        // At this point we know the event occurs every X weeks where X > 1
        // Increment firstDate by adding X weeks to it as many times as possible, without
        // going past date
        return firstDate == date
      }  
    }
    


3 Réponses :




0
votes

Je ne suis pas très familier avec la bibliothèque Groovy, mais depuis que Groovy est en cours d'exécution sur JVM, nous supposons que vous devriez également utiliser la bibliothèque Java / Scala.

Ce dont vous avez besoin ici est une bibliothèque de génération de planification professionnelle comme Lamma ( http://lamma.io ) au lieu d'une bibliothèque de temps de date générale comme Joda. xxx


0 commentaires