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

Services Web Java Discussion :

Perte de précision dates


Sujet :

Services Web Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Inscrit en
    Mars 2007
    Messages
    99
    Détails du profil
    Informations forums :
    Inscription : Mars 2007
    Messages : 99
    Par défaut Perte de précision dates
    Bonjour,

    J'ai un soucis avec mon web service.

    Dans mon client de test, je rentre deux dates (startDate et endDate) au format suivant : "yyyy-MM-dd HH:mm:ss". Ensuite, je converti en Calendar de la manière suivante :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    public static Calendar toCalendar(String dateString) {
     
            try {
               SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
               Date date = format.parse(dateString);
               Calendar calendar = Calendar.getInstance();
               calendar.setTime(date);
               System.out.println("Date = " + calendar.getTime().toString());//pour vérifier
               return calendar;
            } catch (ParseException e) {
               throw new IllegalArgumentException();
            }
        }

    Ensuite dans mon client j'appelle ma méthode en passant en paramètres l'objet contenant les dates(startDate, endDate).

    Là toujours pas de problèmes les dates sont toujours au bon format. Par exemple pour startDate :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    Sun Jun 20 12:00:00 CEST 2010

    Mais quand je passe l'objet à mon proxy et j'appelle la méthode de mon web service ,en faisant le pas à pas, là il y a perte de précision (côté serveur), et startDate devient :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    Sun Jun 20 00:00:00 CEST 2010

    ça peut provenir de quoi ?

  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
    premier problème
    les dates sont toujours au bon format
    Calendar n'a pas de format! C'est juste une grosse coque de méthodes autour d'un long, d'une timezone et d'une locale. Ton simpledateformat n'est pas lié au calendar et donc ne régit pas la manière dont il est formatté lors de sa conversion en String.


    en pratique, faut regarder ton webservice, mais on dirait que ton webservice demande une "date" et que religieusement ton proxy fait ce travail, en retirant la partie "heure" de l'objet Calendar....

  3. #3
    Membre confirmé
    Inscrit en
    Mars 2007
    Messages
    99
    Détails du profil
    Informations forums :
    Inscription : Mars 2007
    Messages : 99
    Par défaut
    Mon web service demande un calendar et pas une date.
    Je ne suis pas expert en web service.
    Par contre, je pense qu'effectivement que c'est mon proxy qui retire la partie "heure" de l'objet Calendar.

    Mais est ce que c'est normal ? peut on éviter cela si oui comment ?

  4. #4
    Membre confirmé
    Inscrit en
    Mars 2007
    Messages
    99
    Détails du profil
    Informations forums :
    Inscription : Mars 2007
    Messages : 99
    Par défaut
    Après analyse , mon problème vient du fait que dans mon fichier xsd , je déclare un type :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <xsd:element name="dateDebut" type="xsd:date" minOccurs="1" maxOccurs="1">
    Pour ne pas avoir la perte de précision je devrais déclarer

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <xsd:element name="dateDebut" type="xsd:dateTime" minOccurs="1" maxOccurs="1">
    Mais cela m'embête car il risque d'autres effets si j'ai une date au format "yyyy/MM/dd".


    Quelle est la bonne pratique pour contourner ce genre de problème ?

Discussions similaires

  1. BCP out - in, perte de précision avec option -c ?
    Par dbaprod dans le forum Adaptive Server Enterprise
    Réponses: 2
    Dernier message: 17/07/2009, 14h19
  2. Soustraction de float et perte de précision
    Par Gxouxou dans le forum Débuter avec Java
    Réponses: 3
    Dernier message: 25/06/2008, 15h08
  3. Réponses: 3
    Dernier message: 06/06/2008, 14h35
  4. Réponses: 3
    Dernier message: 01/08/2007, 12h49
  5. Réponses: 6
    Dernier message: 02/08/2006, 14h07

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