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

avec Java Discussion :

Déterminer le nombre de secondes dans un temps donné.


Sujet :

avec Java

  1. #1
    Membre régulier
    Homme Profil pro
    Analyste programmeur
    Inscrit en
    Octobre 2010
    Messages
    122
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : Belgique

    Informations professionnelles :
    Activité : Analyste programmeur

    Informations forums :
    Inscription : Octobre 2010
    Messages : 122
    Points : 81
    Points
    81
    Par défaut Déterminer le nombre de secondes dans un temps donné.
    Bonjour,

    Voici le morceau de code qui me pose problème :

    J'essaye d'extraire avec ce code les secondes qui ce sont écoulées à partir d'un temps que j'ai introduits.

    Par manque de bol.

    La seule méthode existante s'appelle getTimeInMillis() qui renvoi les millisecondes comme son nom l'indique.

    Que ai-je oublié ? Comment dois-je faire ?

    Merci d'avance.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    String t = "0:30";
    		SimpleDateFormat g = new SimpleDateFormat("mm:ss");
    		g.setLenient(false);
     
    		try {
     
    			Date f = g.parse(t);
    			System.out.println(g.getCalendar().getTime());
    			System.out.println(g.getCalendar().getTimeInMillis() / (60 * 1000));
    		} catch (ParseException e) {
    			// TODO Auto-generated catch block
    			e.printStackTrace();
    		}

  2. #2
    Modérateur

    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    12 551
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 12 551
    Points : 21 607
    Points
    21 607
    Par défaut
    - Tu sais que minuit trente, il y en a un tous les jours. C'est le temps écoulé entre minuit trente d'aujourd'hui, d'hier, ou d'il y a soixante ans, que tu veux ?

    - Si tu veux le temps écoulé entre une date et maintenant, il faut prendre le nombre de millisecondes de maintenant (System.currentTimeMillis()) moins le nombre de millisecondes de la date en question (f.getTime()).

    - Le Calendar d'un DateFormat sert à configurer le type de calendrier, pas à obtenir de résultat sur le parsing. Bref, en réalité, g.getCalendar() ne sert à rien. Ne le fais pas.
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  3. #3
    Membre régulier
    Homme Profil pro
    Analyste programmeur
    Inscrit en
    Octobre 2010
    Messages
    122
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : Belgique

    Informations professionnelles :
    Activité : Analyste programmeur

    Informations forums :
    Inscription : Octobre 2010
    Messages : 122
    Points : 81
    Points
    81
    Par défaut
    Citation Envoyé par thelvin Voir le message
    - Tu sais que minuit trente, il y en a un tous les jours. C'est le temps écoulé entre minuit trente d'aujourd'hui, d'hier, ou d'il y a soixante ans, que tu veux ?

    - Si tu veux le temps écoulé entre une date et maintenant, il faut prendre le nombre de millisecondes de maintenant (System.currentTimeMillis()) moins le nombre de millisecondes de la date en question (f.getTime()).

    - Le Calendar d'un DateFormat sert à configurer le type de calendrier, pas à obtenir de résultat sur le parsing. Bref, en réalité, g.getCalendar() ne sert à rien. Ne le fais pas.
    Je te remercie du conseil.

    Je ne veux pas le temps entre deux date.
    Mais plutôt le nombre de seconde d'un temps tel que ex 1m 30s => 90s
    Donc, je parts de 1m 30s.

  4. #4
    Modérateur

    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    12 551
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 12 551
    Points : 21 607
    Points
    21 607
    Par défaut
    Dans ce cas, il faut bricoler un peu.

    Les DateFormat servent à parser une Date, avec une année, un mois, un jour, et éventuellement heure minute seconde. Une Date, quoi.
    Et quand on veut une durée ? Ben avec Java de base il y a rien. Une idée serait de se baser sur Joda-Time. Sinon, on peut s'en sortir avec Date et SimpleDateFormat, mais c'est du bricolage.

    #1 : Si un DateFormat ne lit aucune information d'année, jour ou mois, (et donc seulement l'heure dans la journée,) il considérera que c'est le 1er janvier 1970.

    #2 : Date.getTime() indique le nombre de millisecondes séparant la Date du 1er Janvier 1970 à minuit, GMT.

    #3 : Sauf indication contraire, un DateFormat utilise la time zone par défaut de l'utilisateur, donc chez nous Europe/Paris, soit un décalage d'une ou deux heures avec GMT, suivant l'heure d'été ou d'hiver.

    Conclusion : on a presque tout ce qu'on veut, sauf que d'un côté on est en GMT et de l'autre côté à l'heure de Paris.

    => Il faut indiquer au DateFormat qu'il doit utiliser la time zone GMT :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    g.setTimeZone(TimeZone.getTimeZone("GMT"));
    Après, une fois la Date parsée, il suffit d'appeler getTime() pour connaître le nombre de millisecondes qu'elle représente :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    System.out.println(f.getTime()/1000);
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  5. #5
    Membre régulier
    Homme Profil pro
    Analyste programmeur
    Inscrit en
    Octobre 2010
    Messages
    122
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : Belgique

    Informations professionnelles :
    Activité : Analyste programmeur

    Informations forums :
    Inscription : Octobre 2010
    Messages : 122
    Points : 81
    Points
    81
    Par défaut
    Citation Envoyé par thelvin Voir le message
    Dans ce cas, il faut bricoler un peu.

    Les DateFormat servent à parser une Date, avec une année, un mois, un jour, et éventuellement heure minute seconde. Une Date, quoi.
    Et quand on veut une durée ? Ben avec Java de base il y a rien. Une idée serait de se baser sur Joda-Time. Sinon, on peut s'en sortir avec Date et SimpleDateFormat, mais c'est du bricolage.

    #1 : Si un DateFormat ne lit aucune information d'année, jour ou mois, (et donc seulement l'heure dans la journée,) il considérera que c'est le 1er janvier 1970.

    #2 : Date.getTime() indique le nombre de millisecondes séparant la Date du 1er Janvier 1970 à minuit, GMT.

    #3 : Sauf indication contraire, un DateFormat utilise la time zone par défaut de l'utilisateur, donc chez nous Europe/Paris, soit un décalage d'une ou deux heures avec GMT, suivant l'heure d'été ou d'hiver.

    Conclusion : on a presque tout ce qu'on veut, sauf que d'un côté on est en GMT et de l'autre côté à l'heure de Paris.

    => Il faut indiquer au DateFormat qu'il doit utiliser la time zone GMT :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    g.setTimeZone(TimeZone.getTimeZone("GMT"));
    Après, une fois la Date parsée, il suffit d'appeler getTime() pour connaître le nombre de millisecondes qu'elle représente :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    System.out.println(f.getTime()/1000);
    C'est ce qui me manquais.

    Merci maitre thelvin

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Déterminer le nombre de mots dans deux fichiers de texte
    Par daniel1985 dans le forum Général Java
    Réponses: 1
    Dernier message: 14/12/2012, 11h51
  2. [MySQL] déterminer le nombre d'auteurs dans des tables différentes
    Par fraisa1985 dans le forum PHP & Base de données
    Réponses: 7
    Dernier message: 28/11/2012, 16h31
  3. [XL-2007] Calculer le nombre d'heure dans un intervalle de temps
    Par sofianeb dans le forum Excel
    Réponses: 2
    Dernier message: 13/04/2010, 16h06
  4. Réponses: 7
    Dernier message: 17/06/2008, 21h58
  5. [CR]nombre de jours dans un mois donné
    Par liberio dans le forum Formules
    Réponses: 2
    Dernier message: 20/04/2004, 16h54

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