Exemple #1
0
  public long weekdays() {
    if (weekdays == -1) {
      weekdays = 0;
      NSTimeZone tz = NSTimeZone.timeZoneWithName("America/Los_Angeles", true);
      // NSTimestamp currDatePacific = new NSTimestamp(currDate.getTime(), tz);

      NSTimestamp startDate = new NSTimestamp(day1.getTime(), tz);
      GregorianCalendar cal = new GregorianCalendar();

      int num = (int) calendardays();
      for (int i = 0;
          i < num;
          i++) { // will check the start date, all days in-between and the end-date
        NSTimestamp tempDate = startDate.timestampByAddingGregorianUnits(0, 0, i, 0, 0, 0);
        cal.setTime(tempDate);
        // The day-of-week is an integer value where 1 is Sunday, 2 is Monday, ..., and 7 is
        // Saturday
        int dayOfWeek = cal.get(Calendar.DAY_OF_WEEK);
        if ((dayOfWeek > 1) && (dayOfWeek < 7)) {
          weekdays++;
        }
      }
    }
    return weekdays;
  }
  /**
   * TODO traiter le cas d'une periode unique a 1 jour qui tombe le 31 ...
   *
   * <p>Retourne la duree d'une periode sur la base de 1 mois = 30 jours 1 an = 12 mois = 360 jours
   *
   * @param dateDebut
   * @param dateDebut
   * @return le nombre de jours de cette periode sur cette base
   */
  public static int getTotalJours360(NSTimestamp dateDebut, NSTimestamp dateFin) {
    int dureePeriode = 0;
    NSTimestamp dateDebutMoisEnCours = DateCtrlConges.dateToDebutMois(dateDebut);
    NSTimestamp dateFinMoisEnCours = DateCtrlConges.dateToFinMois(dateDebut);
    while (DateCtrlConges.isBeforeEq(dateDebutMoisEnCours, dateFin)) {
      boolean moisComplet = true;

      // recadrage du debut et de la fin sur la periode
      if (DateCtrlConges.isBefore(dateDebutMoisEnCours, dateDebut)) {
        dateDebutMoisEnCours = dateDebut;
        moisComplet = false;
      }

      if (DateCtrlConges.isAfter(dateFinMoisEnCours, dateFin)) {
        dateFinMoisEnCours = dateFin;
        moisComplet = false;
      }

      // si le mois est complet, on compte 30 jours
      if (moisComplet) {
        dureePeriode += 30;
      } else {
        // +1 car de j à j+i, il y a i+1 jours complets
        dureePeriode +=
            (dateFinMoisEnCours.getTime() - dateDebutMoisEnCours.getTime()) / (1000 * 60 * 60 * 24)
                + 1;
      }

      // avance au mois suivant
      dateDebutMoisEnCours =
          DateCtrlConges.dateToDebutMois(dateDebutMoisEnCours)
              .timestampByAddingGregorianUnits(0, 1, 0, 0, 0, 0);
      dateFinMoisEnCours = dateDebutMoisEnCours.timestampByAddingGregorianUnits(0, 1, -1, 0, 0, 0);
    }
    return dureePeriode;
  }