IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Collection et Stream Java Discussion :

Format de date


Sujet :

Collection et Stream Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé Avatar de Jean_Benoit
    Profil pro
    Inscrit en
    Juin 2004
    Messages
    499
    Détails du profil
    Informations personnelles :
    Âge : 71
    Localisation : France

    Informations forums :
    Inscription : Juin 2004
    Messages : 499
    Par défaut Format de date
    Bonjour,
    Je dois convertir un nombre de secondes en jours, heures, minutes, secondes.

    Voici mon code:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    //
    // Horloge.java
    //
    // Ecrire un programme qui pour un nombre de secondes donné 
    // calcule et affiche son équivalent en nombre de jours, d'heures, 
    // de minutes et de secondes. 
     
    import java.util.*;
    import java.text.*;
    import java.lang.Exception.*;
     
    public class Horloge {
     
    	public static void main(String[] args) {
    	   int lu = 100;
    	   String secondes;
     
    	   try
    	   {
    	      System.out.println( "Entrez une durée en secondes à convertir: " );
    	      lu = System.in.read();
    	   }
    	   catch ( Exception e )
    	   {
    	      e.printStackTrace();
    	   }
           // sdf simpledateformat( lu ) de int secondes en jours hh mm ss
    	   // formater sdf pour avoir les seconde
           SimpleDateFormat formatter = new SimpleDateFormat ("HH:mm:ss");
           String formattedDate = formatter.format(lu);
    	   System.out.println( "ça donne: " + formattedDate );
    	}
     
     
    }
    Je saisis par exemple 3666 et le prog affiche 01:00:00

    Il faudrait peut-être que je fasse un ( cast ) mais je ne trouve pas comment.

    Merci pour votre aide

  2. #2
    Membre averti
    Profil pro
    Inscrit en
    Juillet 2008
    Messages
    65
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2008
    Messages : 65
    Par défaut
    Tu peux utiliser l'objet Calendar

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
     
    Calendar date = Calendar.getInstance(); //tu récupère l'heure du jour
    //dans le cas ou tu veux conserver l'année et la date
     
    date.set(Calendar.HOUR, 0);
    date.set(Calendar.MINUTE, 0);
    date.set(Calendar.SECOND, 0);
    date.set(Calendar.MILLISECOND, 0);
     
    date.set(Calendar.SECOND, secondes);
    En utilisant quelque chose comme cela tu dois t'approcher d'une solution

  3. #3
    Membre Expert
    Profil pro
    Inscrit en
    Mai 2004
    Messages
    1 252
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Mai 2004
    Messages : 1 252
    Par défaut
    Tu dois d'abord transformer "lu" en entier, puis transformer cet entier en durée et enfin afficher la durée.

  4. #4
    Expert éminent
    Avatar de adiGuba
    Homme Profil pro
    Développeur Java/Web
    Inscrit en
    Avril 2002
    Messages
    13 938
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Java/Web
    Secteur : Transports

    Informations forums :
    Inscription : Avril 2002
    Messages : 13 938
    Billets dans le blog
    1
    Par défaut
    Salut,



    Déjà ta méthode de lecture est incorrect : System.in.read() renvoi le code d'un caractère et non pas un chiffre ! (Voir avec la classe Scanner pour une lecture avancé).

    La gestion des exceptions n'est pas super : ca marche pas mais on continue quand même

    Enfin une date n'est pas une durée... et tu te retrouves avec des valeurs bizarres à cause des particularités des dates (timezone, etc.).



    Soit tu utilises une API qui possède une gestion des durées (Joda-Time par exemple), soit tu implémentes cela sans utiliser Date/Calendar & autres (ce n'est pas la mer à boire )

    [edit] Si besoin tu peux te baser sur TimeUnit pour faire les conversions

    a++

  5. #5
    Membre confirmé
    Profil pro
    Inscrit en
    Décembre 2008
    Messages
    97
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Décembre 2008
    Messages : 97
    Par défaut
    Salut,
    Je te conseille vivement d'utiliser l'API Joda-Time dont parle adiGuba si tu ne veux pas trop te prendre la tête. Elle est déjà bien documentée et très facile d'emploi ;-)

  6. #6
    Membre éclairé Avatar de Jean_Benoit
    Profil pro
    Inscrit en
    Juin 2004
    Messages
    499
    Détails du profil
    Informations personnelles :
    Âge : 71
    Localisation : France

    Informations forums :
    Inscription : Juin 2004
    Messages : 499
    Par défaut
    Hello Pssst

    OK je vais tenter cette API.

    Merci pour la réponse.

    Hors sujet:

    Ma copine est de Braga et Ludo est du PSG!!!! OSKOOOOR!!

Discussions similaires

  1. Format de date
    Par royrremi dans le forum MS SQL Server
    Réponses: 2
    Dernier message: 01/06/2004, 17h32
  2. Détecter le format de date au démarrage
    Par stigma dans le forum Access
    Réponses: 2
    Dernier message: 20/02/2004, 11h04
  3. Réponses: 11
    Dernier message: 02/09/2003, 14h20
  4. Problème de Format de date
    Par titititi007 dans le forum MS SQL Server
    Réponses: 2
    Dernier message: 18/06/2003, 08h19
  5. Réponses: 3
    Dernier message: 06/05/2002, 18h24

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo