La classe Calendar de JavaLangage de développement très populaire ! s’avère bien utilie pour pouvoir manipuler des dates.
Ainsi, par exemple si vous souhaitez créer une liste de semaine vous pouvez vous y prendre de la sorte :
// Avec en paramètre le Nombre de semaine à afficher avant et après public List getListSemaine(Calendar pCalendar, int pNombreSemaineAvant, int pNombreSemaineApres) { // Calcul d’une liste de semaines List lListeSemaine = new ArrayList(1 + pNombreSemaineAvant + pNombreSemaineApres); SemaineDTO lSemaineDTO = null; // Récupération des semaines avant if (pNombreSemaineAvant > 0) { pCalendar.add(Calendar.WEEK_OF_YEAR, (0 – pNombreSemaineAvant)); lSemaineDTO = this.getSemaineByDate(pCalendar, pLocale, pContextDTO); lListeSemaine.add(lSemaineDTO); for (int i = 0; i < (pNombreSemaineAvant – 1); i++) { // On monte d’une semaine pCalendar.add(Calendar.WEEK_OF_YEAR, 1); lSemaineDTO = getSemaineByDate(pCalendar, pLocale, pContextDTO); lListeSemaine.add(lSemaineDTO); } } // Semaine en cours pCalendar.add(Calendar.WEEK_OF_YEAR, 1); lSemaineDTO = getSemaineByDate(pCalendar, pLocale, pContextDTO); lListeSemaine.add(lSemaineDTO); // Récupération des semaines après for (int i = 0; i < pNombreSemaineApres; i++) { // On monte d’une semaine pCalendar.add(Calendar.WEEK_OF_YEAR, 1); lSemaineDTO = getSemaineByDate(pCalendar, pLocale, pContextDTO); lListeSemaine.add(lSemaineDTO); } }
J’ai pour ma part ensuite créer un objet DTO permettant de stocker chaque semaine. Cet objet est alimenté par la fonction suivante :
public SemaineDTO getSemaineByDate(Calendar pCalendar) { SemaineDTO lSemaineDTO = new SemaineDTO(); lSemaineDTO.setAnnee(pCalendar.get(Calendar.YEAR)); lSemaineDTO.setMois(pCalendar.get(Calendar.MONTH)); lSemaineDTO.setNumeroSemaine(pCalendar.get(Calendar.WEEK_OF_YEAR));
// Obtention du premier jour de la semaine pCalendar.set(Calendar.DAY_OF_WEEK, Calendar.MONDAY); lSemaineDTO.setDateDebut(pCalendar.getTime());
// Obtention du dernier jour de la semaine pCalendar.set(Calendar.DAY_OF_WEEK, Calendar.SUNDAY); lSemaineDTO.setDateFin(pCalendar.getTime()); return lSemaineDTO; }
Cet object SemaineDTO contient les propriétés suivantes :
private int mNumeroSemaine; private int mMois; private int mAnnee; private Date mDateDebut; private Date mDateFin;
Ce qui permet ensuite de créer facilement une liste de semaine ayant la forme suivante :
Il est alors simple de créer une fonction pour gérer les boutons précédent et suivant en indiquant + ou – une semaine :
Soit moveSemaineFilter(-1) pour passer à une semaine précédente et moveSemaineFilter(-1) pour une semaine suivante.
Voici le code de cette fonction :
public void moveSemaineFilter(Long NbSemaine) { // Récupération des paramètres int lNombreSemaineAvant = 3; int lNombreSemaineApres = 3; // Récupération de la date en cours Calendar lCalendar = Calendar.getInstance(); Calendar lCalendar2 = Calendar.getInstance(); lCalendar.setTime(mRdvFilter.getSemaine().getDateDebut()); // La date en cours doit être modifiée lCalendar.add(Calendar.WEEK_OF_YEAR, NbSemaine.intValue()); lCalendar2.setTime(lCalendar.getTime());
// Rechargement de la liste des semaines mListeSemaine.getListSemaine(lCalendar, lNombreSemaineAvant, lNombreSemaineApres); // Modification de la semaine par défaut mFilter.setSemaine(getSemaineByDate(lCalendar2)); }
Nous allons voir comment réaliser un websocket avec JEE7
Cet article traite d’un problème de sélection de lignes dans un tableau en client léger.
Détecter du texte à partir d’images grâce à Google Vision - Android - Kotlin