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

Java Discussion :

Java - TimeUnit.DAYS.convert dépend de la machine


Sujet :

Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Futur Membre du Club
    Profil pro
    Inscrit en
    Juillet 2011
    Messages
    2
    Détails du profil
    Informations personnelles :
    Localisation : Tunisie

    Informations forums :
    Inscription : Juillet 2011
    Messages : 2
    Par défaut Java - TimeUnit.DAYS.convert dépend de la machine
    Bonjour tout le monde ,
    j'ai rencontré un probleme "bizarre" ,
    j'ai voulu implementer une petite fonction en java qui calcule le nombre de jours entre deux dates données ,
    j'ai voulu une methode ultra rapide du moment que le programme qu'on implemente traite un tres grand nombre de données ,
    voila le code :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    public static int daysBetween(Date d1, Date d2) {
            long diff = Math.abs(d2.getTime() - d1.getTime());
            long result = TimeUnit.DAYS.convert(diff, TimeUnit.MILLISECONDS);
            return  (int) result;
    }

    La fonction marche tres bien sur mon ordinateur , mais pour ma collegue , elle retourne des resultats erronés (+- 1 jour) ce qui fausse tout (6 jours au lieu de 7 : nous traitons des "weekly data" ) .

    quelqun peut m'aider svp ? pour que ca devienne independant de la machine

    (ps : tous les deux , nous utilisons Windows 7 , Java 8 )

  2. #2
    Expert éminent
    Avatar de tchize_
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2007
    Messages
    25 482
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : Belgique

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2007
    Messages : 25 482
    Par défaut
    Si t'as des valeur différentes, c'est que tes objets Date sont différents.

    En java 8 il vaut mieux utiliser LocalDate:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Period.between(start, end).getDays();

  3. #3
    Modérateur

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

    Informations forums :
    Inscription : Septembre 2004
    Messages : 12 582
    Par défaut
    Il vaut mieux utiliser LocalDate, oui, mais sans doute pas Period.

    Entre le 1er Janvier et le 1er Février, ce code renvoie zéro. Parce qu'entre ces deux dates, il y a une période d'un mois et zéro jour. Donc getMonths() renvoie 1 et getDays() renvoie zéro.
    Plutôt quelque chose comme :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    start.until(end, ChronoUnit.DAYS);
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

Discussions similaires

  1. fontion Java retournant l'adresse MAC d'une machine ?
    Par _LittleFlea_ dans le forum Entrée/Sortie
    Réponses: 11
    Dernier message: 08/06/2012, 17h35
  2. Java- SCP copie de fichier sur une machine distante
    Par yoruichiy dans le forum Entrée/Sortie
    Réponses: 1
    Dernier message: 17/08/2011, 23h02
  3. Réponses: 1
    Dernier message: 13/07/2011, 17h46
  4. [Pocket PC]java machine virtuel sur pocket pc 2003
    Par largowinch dans le forum Mobiles
    Réponses: 2
    Dernier message: 13/10/2005, 15h00
  5. Trouver l'emplacement de la machine virtuelle java
    Par aymron dans le forum Windows
    Réponses: 2
    Dernier message: 30/03/2004, 12h11

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