Partage
  • Partager sur Facebook
  • Partager sur Twitter

[Java] Calculer le nombre de jours que l'on a vécu

Sujet résolu
    10 novembre 2006 à 3:02:39

    Bonjour à tous !

    Ca fait des heures que j'essaie de faire un script qui permet de calculer le nombres de jours que l'on a vécu depuis que l'on est née, en date d'aujourd'hui par exemple.

    Je n'y arrive tout simplement pas, j'ai essayer avec des tableaux, sans tableaux, nada ! o_O

    Auriez-vous une idée de comment je puisse faire?

    Merci
    • Partager sur Facebook
    • Partager sur Twitter
      10 novembre 2006 à 10:24:49

      Bonjour Ssam!

      J'ai cherché sur le net et voici ce que j'ai trouvé :

      import java.text.DateFormat;
      import java.text.MessageFormat;
      import java.text.SimpleDateFormat;
      import java.util.Arrays;
      import java.util.Calendar;
      import java.util.GregorianCalendar;
      import java.util.List;
       
      public class ElapsedTime {
              private static final List TIME_CONSTANTS = Arrays.asList(new Integer[] {
                      new Integer(Calendar.MILLISECOND)
                      , new Integer(Calendar.SECOND)
                      , new Integer(Calendar.MINUTE)
                      , new Integer(Calendar.HOUR_OF_DAY)
                      , new Integer(Calendar.DATE)
                      , new Integer(Calendar.MONTH)
                      , new Integer(Calendar.YEAR)
              });
       
              public static long elapsedTime(GregorianCalendar c1, GregorianCalendar c2, int type) {
                      return elapsedTime(c1, c2, type, false);
              }
             
              public static long elapsedTime(GregorianCalendar c1, GregorianCalendar c2, int type, boolean clear) {
                      long elapsed = 0;
                     
                      GregorianCalendar gc1;
                      GregorianCalendar gc2;
                     
                      Integer t = new Integer(type);
                     
                      if (!TIME_CONSTANTS.contains(t)) {
                              throw new IllegalArgumentException("bad required Calendar type for elapsed time calculation");
                      }
                     
                      if (c1.before(c2)) {
                              gc1 = (GregorianCalendar) c1.clone();
                              gc2 = (GregorianCalendar) c2.clone();
                      } else {
                              gc1 = (GregorianCalendar) c2.clone();
                              gc2 = (GregorianCalendar) c1.clone();
                      }
                     
                      // At this point "gc1 <= gc2"
                      if (clear) {
                              // We only clear MILLISECONDS, SECONDS, MINUTE, HOUR regarding the type asked
                              for (int i = 0; i <= TIME_CONSTANTS.indexOf(t) && i < 4; i++) {
                                      gc1.set(((Integer)TIME_CONSTANTS.get(i)).intValue(), 0);
                                      gc2.set(((Integer)TIME_CONSTANTS.get(i)).intValue(), 0);
                              }
                      }
                     
                      // Regarding what we ask for elpased time
                      // We use different calculation type
                      if (TIME_CONSTANTS.indexOf(t) > 3) {
                              // With such a computation Calendar is responsible of bissextil years and more problems on date
                      gc1.add(t.intValue(), 1);
                              while (gc1.before(gc2) || gc1.equals(gc2)) {
                               gc1.add(t.intValue(), 1);
                               elapsed++;
                              }
                      } else {
                              // A faster one for MILLISECONDS/SECONDS/MINUTES/HOUR
                              long millis = gc2.getTimeInMillis() - gc1.getTimeInMillis();
                              if (type==Calendar.MILLISECOND) {
                                      elapsed = millis;
                              } else if (type==Calendar.SECOND) {
                                      elapsed = millis / 1000;
                              } else if (type==Calendar.MINUTE) {
                                      elapsed = millis / (1000 * 60);
                              } else if (type==Calendar.HOUR_OF_DAY) {
                                      elapsed = millis / (1000 * 60 * 24);
                              }
                      }
                      return elapsed;
              }
             
              public static void main(String[] args) {
                      GregorianCalendar c1 = new GregorianCalendar(2002, 02, 01);
                      GregorianCalendar c2 = new GregorianCalendar(2005, 01, 01);
                     
                      printElapsedTime(c1, c2, true);
       
                      c1 = new GregorianCalendar(2002, 02, 01, 12, 0, 0);
                      c2 = new GregorianCalendar(2002, 02, 01, 15, 1, 1);
       
                      printElapsedTime(c1, c2, false);
                      c2.set(Calendar.MILLISECOND, 115);
                      printElapsedTime(c1, c2, false);
                      printElapsedTime(c1, c2, true);
              }
             
              private static void printElapsedTime(GregorianCalendar c1, GregorianCalendar c2, boolean clear) {
                      DateFormat df = new SimpleDateFormat("dd/MM/yyyy HH:mm:ss SSS");
                      System.out.println(MessageFormat.format("calcul de temps écoulé entre {0} et {1}, clear mode [{2}]", new Object[] {df.format(c1.getTime()), df.format(c2.getTime()), Boolean.valueOf(clear)}));
                      System.out.println("années: " + ElapsedTime.elapsedTime(c1, c2, Calendar.YEAR, clear));
                      System.out.println("mois: " + ElapsedTime.elapsedTime(c1, c2, Calendar.MONTH, clear));
                      System.out.println("jours: " + ElapsedTime.elapsedTime(c1, c2, Calendar.DATE, clear));
                      System.out.println("heures: " + ElapsedTime.elapsedTime(c1, c2, Calendar.HOUR_OF_DAY, clear));
                      System.out.println("minutes: " + ElapsedTime.elapsedTime(c1, c2, Calendar.MINUTE, clear));
                      System.out.println("secondes: " + ElapsedTime.elapsedTime(c1, c2, Calendar.SECOND, clear));
                      System.out.println("millis: " + ElapsedTime.elapsedTime(c1, c2, Calendar.MILLISECOND, clear));
                      System.out.println("");
              }
      }



      Je n'ai pas testé, pas sur que ça fonctionne!!



      Nico ;)
      • Partager sur Facebook
      • Partager sur Twitter
        10 novembre 2006 à 10:49:30

        Le nombre de jours que tu as vécu, c'est ton age :-°

        Sinon, utilise la fontion Date ;)
        Exemple ici.
        • Partager sur Facebook
        • Partager sur Twitter
          11 novembre 2006 à 23:38:15

          Merci des réponses, mais finalement j'ai reussi à faire un script tout seul, et beaucoup moins compliqué et moins long que ceux-la!
          • Partager sur Facebook
          • Partager sur Twitter
            12 novembre 2006 à 10:47:52

            Montre comment tu as fais :p
            • Partager sur Facebook
            • Partager sur Twitter
              13 novembre 2006 à 14:27:44

              Citation : Ssam

              Merci des réponses, mais finalement j'ai reussi à faire un script tout seul, et beaucoup moins compliqué et moins long que ceux-la!



              On écrit pas des scripts en java. :-°
              • Partager sur Facebook
              • Partager sur Twitter

              [Java] Calculer le nombre de jours que l'on a vécu

              × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
              × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
              • Editeur
              • Markdown